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との違いがわかりません。なぜこれがそこで異なった振る舞いをするのですか?