非型テンプレート引数に関する記事を読んでいたところ、次のように書かれてい
ました。これは100
、コンパイルされた時定数式であるため、 100+99
、1<<3
などが許可されることを意味します。のような関数呼び出しを伴う引数abs(-120)
は使用できません。
例 :
template<class T, int SIZE>
class Array{};
int main(){
Array<int, 100+99> my_array; // allowed
Array<int, abs(-120)> my_array; // not allowed
}
100+99 と abs(-120) の違いは何ですか?
100+99 がコンパイル時間で、abs(-120) がそうではないのはなぜですか?