小编Oz *_* Le的帖子

enable_if添加一个具有默认参数的函数参数?

我无法理解这里介绍的第二种情况.它说:

•场景2:添加具有默认参数的函数参数:

template <your_stuff> your_return_type_if_present
yourfunction(args, enable_if_t<your condition, FOO> = BAR) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

方案2使参数未命名.你可以说::type Dummy = BAR,但名字Dummy是无关紧要的,并给它一个名字可能会触发一个未引用的参数警告.您必须选择FOO函数参数类型和BAR默认参数.你可以说int0,但你的代码的用户可能会意外地传递给函数的一个额外的整数,将被忽略.相反,我们建议您使用void **,要么0nullptr因为几乎没有什么可转换为void **:

template <your_stuff> your_return_type_if_present 
yourfunction(args, typename enable_if<your_condition, void **>::type=nullptr) {
 // ...
}
Run Code Online (Sandbox Code Playgroud)

如果方案2使参数未命名,那么它可以使用什么?有没有办法让像这样的代码工作enable_if

enum otype {oadd,omull};
template<otype o>
int add(int num1, std::enable_if<o == oadd, int>::type int= num2)
{
    if (o == omull) return …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae enable-if

6
推荐指数
2
解决办法
2845
查看次数

c ++在线程之间共享状态的最佳方式

方案如下:线程A继续执行,直到它从线程B收到一个停止从控制台读取输入的停止信号.

实现这个的最佳方法是什么?例如,我想我可以将它实现为一个全局变量,线程A每隔一段时间就会检查一次,而线程B可以改为发出"停止"信号,

但我不知道这是不是正确的方法.

  • 即使它是正确的,我应该使用"Volatile"还是"Atomic <>"?特别是线程A只读取变量的值,而线程B只写入变量.

  • 如果在线程A读取它之后立即从线程B修改变量并不重要(不会引起问题"线程A退出时间有些放松(在信号之后容忍)")?

  • 是否还有另一种方法让线程B启动线程A并在需要时停止它?

c++ multithreading mutex atomic c++11

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

标签 统计

c++ ×2

atomic ×1

c++11 ×1

enable-if ×1

multithreading ×1

mutex ×1

sfinae ×1