Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- // First method
- template<typename Arr>
- std::size_t array_size_1(const Arr& arr)
- {
- return sizeof(arr)/sizeof(arr[0]);
- }
- // Second method
- template<typename T, std::size_t sz>
- std::size_t array_size_2(const T (&arr)[sz])
- {
- return sz;
- }
- int main() {
- int arr[] = {1,2,3,4,5};
- std::string sarr[] = {"abc", "def", "ghj"};
- std::cout << array_size_1(arr) << "n";
- std::cout << array_size_2(sarr) << "n";
- return 0;
- }
- #define NELEM(x) (sizeof(x) / sizeof (x)[0])
- int *p = nullptr;
- std::vector<int> v;
- size_t a = array_size_2(p); // ERROR
- size_t b = array_size_2(v); // ERROR
- int foo(int a[]) {
- return array_size_1(a); // OOPS!
- }
Add Comment
Please, Sign In to add comment