intgral 型の非型テンプレート引数は const 式でなければならないことはわかっています。
template <int E>
class cat
{
public:
int array[E];
};
int main()
{
cat<4> ob; // ??
}
私が読んだことから、式でconst初期化される変数のみconstがconst式です。この例では がint E = 4;あるので、式Eにはなりませんconst。
では、なぜcat<4> ob;エラーが発生しないのでしょうか? ここで何か不足していますか?コンパイル時に不明な場合
、どのようint array[E];に作成されますか?E