私は2つの異なるシナリオを実行しようとしました:
シナリオ 1:
const auto arraySize = 10; // fine, arraySize is constant
std::array<int, arraySize> data;
ここで、 arraySize はコンパイル時の定数として扱われるため、 std::array で許可されました。
シナリオ 2:
int sz=10;
const auto arraySize = sz; // fine .
std::array<int, arraySize> data; //error , arraySize is not compile time constant .
シナリオ 2 では、arrySize が sz の定数コピーであるにもかかわらず、arraySize はコンパイル時定数として扱われません。
これら 2 つのシナリオの扱いが異なるのはなぜですか?