1
template <int parameter> class MyClass

上記はテンプレートの専門化ですか?私はそうは思いませんが、よくわかりません。テンプレートが引数を関数として受け取ることができるとは知りませんでした..引数はどこに保存されますか?

4

2 に答える 2

3

テンプレート パラメーターは必ずしも型名である必要はありません。数値でもかまいません。たとえば、配列サイズ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;
}
于 2013-03-02T09:24:07.553 に答える
1

それらの引数は、型情報内に格納されます。

いいえ、それはテンプレートの専門化ではありません。これを見てください:

template <int, int> class MyClass;         // <-- primary template
template <int>      class MyClass<int, 4>; // <-- partial specialization
template <>         class MyClass<5, 4>;   // <-- specialization
于 2013-03-02T09:21:42.593 に答える