c++类成员函数对bool值的特化

标签 c++ c++11

我有一个带有 bool 模板参数的类。该类将有几个方法,我需要专注于类 bool 模板参数。有没有一种方法可以在不专门化整个类(class)本身的情况下做到这一点?

下面的 Foo::bar() 是我的意思的一个例子,它不起作用,因为 std::is_same 适用于类型而不是值

谢谢。

template<bool Mode>
class Foo
{   
public:
template<bool M=Mode, typename std::enable_if<std::is_same<M,true>::value>::type * = 0>
void bar()
{
    std::cout << "true" << std::endl;
}

template<bool M=Mode, typename std::enable_if<std::is_same<M,false>::value>::type * = 0>
void bar()
{
    std::cout << "false" << std::endl;
}

最佳答案

也许我遗漏了一些东西,但为什么不使用普通的好旧特化呢?

template <bool M>
struct base_template {
   void bar();
};

template <>
inline void base_template<true>::bar() { std::cout << "true\n"; }
template <>
inline void base_template<false>::bar() { std::cout << "false\n"; }

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

相关文章:

c++ - 为什么 bind 在 lambda 工作时什么都不做

c++ - 用高斯混合模型估计颜色分布

c# - C、C++、Java 和 C# 中的前后递增运算符行为

php - Swig 将 vector<std::string> 转换为原生 PHP 数组

c++ - Unique_ptr 容器或 unique_ptr 元素

c++11 - 带有映射的结构的 ostream 运算符重载

python - 将 python 嵌入到 C++ 中无法按预期工作

c++ - 内存管理不好?大于 1 的类成员( bool )值,在递归函数中

c++ - 使用dectlype推导出模板元素类型中的数据类型是否正确?

c++ - 基于 constexpr 的计算图灵是否完整?