如何有一个依赖于类的模板参数的成员函数实现?

珍南

这是我的最佳尝试:

#include <iostream>

template <bool EnableSomething = false>
class MyClass
{
    typename std::enable_if< EnableSomething >::type
        something(int& x)
    {
        x += 1; //do something
    }

    typename std::enable_if< !EnableSomething >::type
        something(int& x)
    {
        // do nothing, should be optimized away
    }

public:
    void Process()
    {
        int x = 0;
        something(x);
        std::cout << "Enabled: " << EnableSomething << ".  x = " << x << std::endl;
    }
};

int main()
{
    MyClass<true> yes;
    MyClass<false> no;
    yes.Process();
    no.Process();
    return 0;
}

编译器说: tester.cpp(12): error C2039: 'type': is not a member of 'std::enable_if<false,_Ty>'

用户名

使用从父临时模板获取的默认参数制作常规模板:

template<bool x_enabled = EnableSomething> 
typename std::enable_if< x_enabled >::type
something(int& x)
{
    x += 1; //do something
}

template<bool x_enabled = EnableSomething> 
typename std::enable_if< !x_enabled >::type
something(int&)
{
    // do nothing, should be optimized away
}

使用c ++ 17,事情变得更加简单:

void
something(int& x)
{
    if constexpr(EnableSomething)
    {
        x += 1; //do something
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何键入依赖于另一个类参数值的类参数?

如何设计一个接受所有域但依赖于某些状态的局部函数?

解耦依赖于另一个类的类,该类的构造函数接受参数

如何使参数的默认值依赖于另一个参数(在Python中)?

C ++ 17,制作一个变体模板,该模板使用依赖于模板参数的std :: variant?

一个python函数参数可以依赖于另一个参数吗?

如何使用@InjectMocks依赖于另一个要模拟的类?

当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

如何在类型依赖于派生类的基础模板类中声明成员?

Python:如何从依赖于模块的另一个文件中正确导入函数

如何在init函数中实例化一个依赖于self的对象?

如何单独并行运行一个依赖于另一个大函数的函数

打字稿:如何让第二个参数类型依赖于第一个参数值

编写具有依赖于继承成员的函数的基类的正确方法

一个CSS类依赖于另一个

如何测试依赖于另一个服务(又依赖于Http服务)的服务/组件?

Python Pandas:如何使列行依赖于它的前一行,可能有一个函数?

是否有一个SQL函数可以让我输入依赖于另一列的某些数据

如何在依赖于两个变量的函数中仅对一个变量使用“ for”循环?

创建一个新的依赖于GraphFrames的scala类,而没有序列化问题

C:创建一个带有依赖于运行时函数的变量的静态数组?

如何定义依赖于模板参数的typedef的typedef

如何使一个Maven模块依赖于另一个?

在cmake中,如何使一个目标依赖于另一个目标?

在依赖于前一行值的DataFrame上应用一个函数

从依赖于另一个jar的jar加载类

运行依赖于另一个Java类的Java文件

setState 依赖于另一个类的值

如何返回依赖于两个函数的函数?