Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename T, size_t n>
- size_t array_size(const T (&)[n])
- {
- return n;
- }
- int a[] = {1, 2, 3};
- int *ap = a; // a pointer, size is lost
- int (&ar)[3] = a; // a reference to the array, size is not lost
- template<typename T, size_t n>
- size_t array_size(const T (&)[n]) {
- return n;
- }
- size_t array_size(const int (&)[3]) {
- return 3;
- }
- size_t size_of_a = array_size(a);
- template<typename T, size_t n>
- char (& array_size(const T (&)[n]) )[n];
- size_t size_of_a = sizeof(array_size(a));
- int havingSameSize[sizeof(array_size(a))];
- // Note that you don't need to name the array, since you don't
- // actually reference the parameter at all.
- size_t array_size(const int (&)[1])
- {
- return 1;
- }
- size_t array_size(const int (&)[2])
- {
- return 2;
- }
- size_t array_size(const int (&)[3])
- {
- return 3;
- }
- // etc...
- int a[2];
- array_size(a);
- template <int n>
- size_t array_size(const int (&)[n])
- {
- return n;
- }
- template <typename T, int n>
- size_t array_size(const T (&)[n])
- {
- return n;
- }
- const int &a[1];
- const int (&a)[1];
- size_t array_size(const int (&)[1])
- char a[10];
- array_size(a); // returns 10
Add Comment
Please, Sign In to add comment