gpt4 book ai didi

c++ - 模板类成员函数特化

转载 作者:行者123 更新时间:2023-11-28 02:18:22 28 4
gpt4 key购买 nike

在有人将此问题标记为 this 的重复之前,请让我解释一下我的问题。我有一个类模板,其成员函数不是模板。我想为特定类模板参数添加此类函数主体的其他版本。在我的例子中,它只能有两种变体:“真”或“假”

示例:

  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我想做的事情仍然应该通过一些模板魔法来实现。答案中的所有解决方案都不适用于我的情况。

最佳答案

您只需要使用 template <> 将其标记为特化:

template <>
inline bool EvenOddProcessor<true>::ProcessEvenOdd()
{
return true;
}

[Live example]

关于c++ - 模板类成员函数特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343639/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com