1

例えば

template<class T>
struct Foo
{
    typedef int Type;
    void f();
}

Foo<T>::f()特定の に特化することができますT。定義された型はTypeどうですか?それが機能する場合、クラス全体を専門化する必要はありません。この意図を実装する方法はありますか?

4

1 に答える 1

2
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;
于 2013-08-06T18:09:02.533 に答える