Я пробовал:
template <typename T,unsigned S>
unsigned getArraySize(const T (&v)[S]) { return S; }
после ответа Мотти qaru.site/info/20630/...
но у меня есть это сообщение:
ошибка C2265: '': ссылка на массив нулевого размера является незаконным
Что случилось с моим компилятором?
Я посмотрел эту страницу: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/4b78bcef-4c33-42f1-a4c5-fb6f702ced0b/vs6-c-compile-error-using-getaddrinfo поэтому я попробовал это решение:
template <typename T,unsigned S>
unsigned getArraySize(const T v[S]) { return S; }
это компилируется, но когда я пытаюсь его использовать:
double myX[2] = {7,3};
std::cout << getArraySize(myX) << std::endl;
Я получаю ошибку компиляции:
ошибка C2783: 'unsigned int __cdecl getArraySize (const T [])': не удалось вывести аргумент шаблона для 'S'
Помимо изменения компилятора, есть ли способ обхода, который я могу использовать для получения размера массива?