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