Является ли следующий код С++ действительным и почему?
std::array<std::string, 42> a1;
std::array<int, a1.size()> a2;
Он не компилируется в GCC 4.8 (в режиме С++ 11). Существует простое, но неэлегантное решение:
std::array<std::string, 42> a1;
std::array<int, sizeof(a1)/sizeof(a1[0])> a2;
Так ясно, что компилятор может определить количество элементов в std:: array. Почему std:: array:: size() не является функцией constexpr static
?
EDIT: Я нашел другое обходное решение:
std::array<std::string, 42> a1;
std::array<int, std::tuple_size<decltype(a1)>::value> a2;