История изменений
Исправление vzzo, (текущая версия) :
template <typename T>
constexpr typename std::enable_if<std::is_array<T>::value, unsigned int>::type getArrayLength(const T&) {
return std::extent<T>::value;
}
template<unsigned int Size, typename T>
constexpr unsigned int getArrayLength(T*) {
return Size;
}
int main() {
const int a[20] = {0};
cout << getArrayLength(a); // 20
cout << getArrayLength<100>(a); // 100
return 0;
}
Исходная версия vzzo, :
template <typename T>
typename std::enable_if<std::is_array<T>::value, unsigned int>::type getArrayLength(const T& s) {
return std::extent<T>::value;
}
template<unsigned int Size, typename T>
unsigned int getArrayLength(T*) {
return Size;
}
int main() {
const int a[20] = {0};
cout << getArrayLength(a); // 20
cout << getArrayLength<100>(a); // 100
return 0;
}