したがって、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;
}
明らかに、テンプレートを使用する際に何かが欠けているか、指定されたルールがいくつかあります。これをうまく説明している良い記事が見つかりません。
どんな助けでも大歓迎です。
事前に感謝します。