最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<condition_variable>

# std::condition_variable_any::コンストラクタ(C++11)

    condition_variable_any();                                       // (1)
    condition_variable_any(const condition_variable_any&) = delete; // (2)

## 概要

- (1) : デフォルトコンストラクタ。`condition_variable_any`オブジェクトの初期化を行う
- (2) : コピーコンストラクタ。コピー不可。これによってムーブも不可。

## 例外

この関数は、`bad_alloc` 例外オブジェクト、もしくは以下のerror conditionを持つ`system_error` 例外オブジェクトを送出する可能性がある：

- `resource_unavailable_try_again` : 制限により、非メモリリソースの初期化ができなかった
- `operation_not_permitted` : スレッドがこの操作を実行する権限を持っていない

## 例

    #include <condition_variable>

    int main()
    {
      std::condition_variable_any cond;
    }

### 出力

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅
  - 2012までは、delete宣言に対応していないため、代わりにprivateで宣言のみ行う手法で代用されている。

## 参照

- [LWG Issue 2092. Vague Wording for `condition_variable_any`]
  - C++11では`resource_unavailable_try_again`エラーの理由が「native handleの計算ができなかった」というものだった。しかし、このクラスはnative handleを持っていることがpublicインタフェースになっていないため、C++14で「制限により、非メモリリソースの初期化ができなかった」という表現に修正。