template <int parameter> class MyClass
上記はテンプレートの専門化ですか?私はそうは思いませんが、よくわかりません。テンプレートが引数を関数として受け取ることができるとは知りませんでした..引数はどこに保存されますか?
テンプレート パラメーターは必ずしも型名である必要はありません。数値でもかまいません。たとえば、配列サイズstd::array
の型のパラメーターを取ります。size_t
あなたの場合、クラス テンプレートは type のパラメーターを受け取りますがint
、これはまったく問題ありません。このようなパラメーターの使用例を次に示します。
template <int param> struct MyClass {
int array[param]; // param is a compile-time constant.
};
int main() {
MyClass<5> m;
m.array[3] = 8; // indexes 0..4 are allowed.
return 0;
}
それらの引数は、型情報内に格納されます。
いいえ、それはテンプレートの専門化ではありません。これを見てください:
template <int, int> class MyClass; // <-- primary template
template <int> class MyClass<int, 4>; // <-- partial specialization
template <> class MyClass<5, 4>; // <-- specialization