0

したがって、remove_reference または remove_pointer は常にプリミティブ型を返します。

テンプレートのメタプログラミングで、いわゆるテンプレートの特殊化を使用してそれを行うことは知っていますが、その方法はよくわかりません。

たとえば、以下。

template<class T>
struct AAA
{
    typedef T Type;
};

template<class T>
struct AAA<T*>
{
    // Why does T become int, not int * all of sudden?
    // How come does this get rid of '*' in a specific way?
    typedef T Type;
};

int main()
{
    AAA<int *>::Type MyVar = 3; // MyVar is not a pointer!
    return 0;
}

明らかに、テンプレートを使用する際に何かが欠けているか、指定されたルールがいくつかあります。これをうまく説明している良い記事が見つかりません。

どんな助けでも大歓迎です。

事前に感謝します。

4

1 に答える 1

2
// Why does T become int, not int * all of sudden?

T*ですint*、そうでTなければなりませんint

于 2013-07-06T06:46:27.100 に答える