以下是有效的 C++ 代码,为什么不呢?
std::array<std::string, 42> a1;
std::array<int, a1.size()> a2;
它不能在 GCC 4.8(在 C++11 模式下)中编译。有一个简单但不优雅的解决方法:
std::array<std::string, 42> a1;
std::array<int, sizeof(a1)/sizeof(a1[0])> a2;
很明显,编译器可以计算出 std::array 中元素的数量。为什么 std::array::size() 不是constexpr static
函数?
编辑:我找到了另一种解决方法:
std::array<std::string, 42> a1;
std::array<int, std::tuple_size<decltype(a1)>::value> a2;