在C++11 中的一些unique_lock
构造函数中,可以传递一些类,如标志,即
auto lock = std::unique_lock<std::mutex> lock(m, std::defer_lock);
其中std::defer_lock
定义为
struct defer_lock {}
为什么以这种方式完成,而不是使用枚举?
我试图将其应用于一个小代码示例,但我无法编译它:
class A {};
void foo(A a) {}
int main() {
foo(A); // error: 'A' does not refer to a value
}
当我把括号放在foo(A());
它的工作原理上时,但我看不出与 STL 的区别。为什么这在那里表现不同?