例えば
template<class T>
struct Foo
{
typedef int Type;
void f();
}
Foo<T>::f()
特定の に特化することができますT
。定義された型はType
どうですか?それが機能する場合、クラス全体を専門化する必要はありません。この意図を実装する方法はありますか?
template<class T>
struct Foo
{
typedef typename some_class_template<T>::type Type;
void f();
};
メンバー関数には宣言と定義があり、定義を特殊化できます。これはメンバー タイプでは実行できません。これらは宣言で特殊化する必要があります。
もちろん、 mysome_class_template
は標準ライブラリの何でもかまいません。たとえば、
typedef typename std::conditional<sizeof(T)==4, int, T>::type Type;