如何在if语句初始化程序中正确使用std :: scoped_lock?

时间:2019-02-23 07:53:22

标签: c++ xcode macos c++17

我是C ++ 17的新if语句初始化器语法的忠实拥护者,我倾向于在任何有意义的地方使用它。我也使用新的std::scoped_lock,并希望将这两个新功能结合起来。但是,除了以下内容,我找不到其他“更好”的语法:

if (std::scoped_lock<std::mutex> guard(mutex_); true) {
  // Do something.
}

请注意我必须如何在if语句的条件侧使用关键字true。我希望只将guard放在此处,但是当我尝试以下错误时:

  类型'std :: scoped_lock'的

值与上下文无关   可转换为“布尔”

std::scoped_lock似乎没有其他成员函数可以调用以获取适当的布尔值。

使用比关键字true更好的语法吗?还是采用其他方法可以使事情更加清楚? (或者也许以这种方式使用scoped_lock是个坏主意?)

编辑:

我知道通过使用{}将锁仅包含在其自身范围内的标准做法。我只是偏爱使用这种新语法,因为我从来都不喜欢单独使用一个开放式括号。

0 个答案:

没有答案