非型テンプレート引数に関する記事を読んでいたところ、次のように書かれてい
ました。これは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) がそうではないのはなぜですか?