在有人将此问题标记为this的副本之前,请让我解释一下我的问题。 我有一个类模板,其成员函数不是模板。我希望为特定的类模板参数添加此类函数体的其他版本。在我的情况下,它只能有两种变体:“true”或“false”< / p>
示例:
template <bool IsEven>
class EvenOddProcessor{
public:
bool ProcessEvenOdd();
};
//Default definition:
template<bool IsEven>
inline bool EvenOddProcessor<IsEven>::ProcessEvenOdd()
{
return false;
}
//Now I want to define the special case of the function
//when the class template param is true:
inline bool EvenOddProcessor<true>::ProcessEvenOdd()
{
return true;
}
现在,这适用于MSVC编译器,而不适用于GCC。这并不奇怪,因为GCC总是对C ++标准更严格,据我所知,它不允许成员函数专业化。但是基于答案this question我想要做的事情仍然应该可以通过一些模板魔术来实现。在我的案例中,这些答案中的解决方案都没有。
答案 0 :(得分:2)
您只需将其标记为template <>
的专业化:
template <>
inline bool EvenOddProcessor<true>::ProcessEvenOdd()
{
return true;
}