1

なぜこれが機能しないのですか?

template <class T>
struct Low;

template <>
struct Low<int> {};//Here I'm trying to specialize for int

int main()
{
Low<1> a;

}
4

3 に答える 3

5

Low<int> a;動作します - テンプレートは整数引数ではなく型を取ります。

于 2011-04-03T11:03:11.213 に答える
4
Low<1> a;

あなたのクラス テンプレートLowは INTEGRAL VALUE ではなく TYPE を期待しています!

そのように使用したい場合は、クラス テンプレートを次のように定義する必要があります。

template <int N>
struct Low {};

これによりLow<1>、、、、などを書くことができます。Low<2>Low<400>


と定義するLowと、

template <class T>
struct Low;

次に、インスタンス化するときにタイプを提供する必要があります。たとえばLow<char>Low<unsigned int>、 などです。

そのため、それぞれのケースでどのように定義され、どのようにインスタンス化されるかの違いに注目してください!

于 2011-04-03T11:01:17.087 に答える
3

と の間には違いがLow<1>ありLow<int>ます。

の特殊化を記述する必要がありますがLow<1>、元のテンプレートは最初のパラメーターとして値ではなく型を取るため、それは不可能です。

于 2011-04-03T11:02:31.153 に答える