「非型」テンプレート・パラメーターの構文は、次のいずれかの型の宣言と同じです。
配列、または関数として宣言された「非型」テンプレート・パラメーターは、 ポインター、または関数を指すポインターにそれぞれ変換されます。 次の例は、このことを示しています。
template<int a[4]> struct A { }; template<int f(int)> struct B { }; int i; int g(int) { return 0;} A<&i> x; B<&g> y;
&i の型は、int * で、 &g の型は、int (*)(int) です。
「非型」テンプレート・パラメーターを const または volatile で修飾できます。
「非型」テンプレート・パラメーターを、浮動小数点、クラス、 または void 型として宣言することはできません。
「非型」テンプレート・パラメーターは、左辺値ではありません。
関連参照