给定一个类声明
class A {
template <typename T> T foo();
};
我想专门A::foo
研究. 不幸的是,我似乎不能用于后者。以下内容无法编译:int
T
std::enable_if
template <> int A::foo<int>(); // OK
template <typename T>
typename std::enable_if<is_pod<T>::value, T>::type foo(); // <<<< NOT OK!
template <typename T>
typename std::enable_if<!is_pod<T>::value, T>::type foo(); // <<<< NOT OK!
问题可能是由于这些std::enable_if<...>
东西是函数签名的一部分,并且我没有在A
. 那么如何根据类型特征专门化模板成员?