例如
template<class T>
struct Foo
{
typedef int Type;
void f();
}
Foo<T>::f()
可以专门针对特定的T
。如何定义类型Type
?如果它有效,我不需要专门化整个班级。有没有办法实现这个意图?
答案 0 :(得分: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;