小编Ral*_*qui的帖子

在某些枚举模板案例中启用类构造函数

出于性能原因,我使用带有枚举的模板化类而不是继承中的中继(它不是一个选项).

在这一点上,我有类似的东西:

typedef enum { A, B, C, D } QueueType;

template <QueueType T> class Queue {
    Queue(int a){...} // only usable when T = A
    Queue(unsigned a, unsigned b){...} // only usable when T = B || T = C
    Queue(somestruct z){...} // only usable when T = B || T = C
    //other constructors
}
Run Code Online (Sandbox Code Playgroud)

现在,如果T为定义的内容调用不兼容的构造函数,我正在使用烦人的ifs/switch 和上升异常T.

我想要的是使用std::enable_if或等效防止在构造函数上抛出异常并在编译时检测这种错误.

我已经尝试了很多堆栈溢出和外部站点的std::enable_if例子,但我几乎无法理解我真正在做什么,而且我总是以编译错误结束.

在此先感谢并抱歉要求提出一个可能非常简单的问题.我是模特的菜鸟.

环境:Linux GCC 8和c ++ 14 限制:没有虚拟方法的最大性能.

c++ templates sfinae enable-if c++14

4
推荐指数
1
解决办法
169
查看次数

从包含的CMakeList.txt中删除消息

我正在使用一个简单的将一个项目包含到我的项目中add_subdirectory

但是,该项目非常冗长,并且在我的构建中充满了很多信息。无需修改外部项目...是否可以删除所有(或部分)那些烦人的导入消息?

cmake

1
推荐指数
1
解决办法
437
查看次数

标签 统计

c++ ×1

c++14 ×1

cmake ×1

enable-if ×1

sfinae ×1

templates ×1