我试图执行两种不同的场景:
场景一:
const auto arraySize = 10; // fine, arraySize is constant
std::array<int, arraySize> data;
在这里,arraySize 被视为编译时间常数,因此它在 std::array 中是允许的。
场景二:
int sz=10;
const auto arraySize = sz; // fine .
std::array<int, arraySize> data; //error , arraySize is not compile time constant .
在方案 2 中,尽管 arrySize 是 sz 的常量副本,但仍不将 arraySize 视为编译时间常量。
为什么这两种情况被区别对待?