我是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
是个坏主意?)
编辑:
我知道通过使用{
和}
将锁仅包含在其自身范围内的标准做法。我只是偏爱使用这种新语法,因为我从来都不喜欢单独使用一个开放式括号。