最終更新日時: 2026年07月22日 16時08分23秒 (JST)
rotarymars が更新

履歴 編集

function
<future>

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

    promise();                                    // (1)

    template <class Allocator>
    promise(allocator_arg_t, const Allocator& a); // (2)

    promise(promise&& rhs) noexcept;              // (3)
    promise(const promise& rhs) = delete;         // (4)

## promiseオブジェクトの構築

- (1) : デフォルトコンストラクタ。`promise`オブジェクトと共有状態の構築を行う。
- (2) : アロケータを指定して`promise`オブジェクトと共有状態の構築を行う。
- (3) : ムーブコンストラクタ。新たな`promise`オブジェクトを構築し、`rhs`から共有状態の所有権を委譲する。
- (4) : コピーコンストラクタ。コピー禁止。

## 事後条件

- (3) : `rhs`が共有状態を持っていないこと

## 例

    #include <memory>
    #include <future>
    #include <utility>

    int main()
    {
      // デフォルト構築
      {
        std::promise<int> p;
      }

      // アロケータを指定して構築
      {
        std::promise<int> p = {
            std::allocator_arg,
            std::allocator<std::promise<int>>()
        };
      }

      // ムーブ構築
      {
        std::promise<int> p1;
        std::promise<int> p2 = std::move(p1);
      }
    }

### 出力

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅

## 参照