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();
};

成员函数有声明和定义,你可以专门定义。对于成员类型,这是无法做到的。这些必须用他们的声明来专门化。

当然,我some_class_template可以是标准库中的任何东西,例如

  typedef typename std::conditional<sizeof(T)==4, int, T>::type Type;
于 2013-08-06T18:09:02.533 回答