最終更新日時: 2025年09月28日 01時03分34秒 (JST)
Raclamusi が更新

履歴 編集

function
<syncstream>

# std::basic_osyncstream::emit(C++20)

    void emit();

## 概要

格納されている文字データを、ラップされたストリームに転送する。このような転送は、同じストリームを持つ他のオブジェクトによる転送に関してアトミックである。

## 効果

ラップしたストリームバッファの`emit()`を呼び出す。
その呼び出しが`false`を返す場合は、`setstate(ios::badbit)`を呼び出す。

## 戻り値

なし。

## 例外

投げる可能性がある。このメンバ関数は、基礎となるストリームに対する操作からの例外を処理するために使用できる。

    {
      osyncstream bout(cout);
      bout << "Hello, " << "World!" << '\n';
      try {
        bout.emit();
      } catch (...) {
        // 例外を処理する
      }
    }

## 例

    #include <iostream>
    #include <syncstream>
    #include <utility>

    int main()
    {
      std::osyncstream bout(std::cout);
      bout << "Hello," << '\n';      // フラッシュしない
      bout.emit();                   // 文字は転送される。std::cout はフラッシュしない
      bout << "World!" << std::endl; // フラッシュしない。std::cout はフラッシュしない
      bout.emit();                   // 文字は転送される。std::cout はフラッシュする
      bout << "Greetings." << '\n';  // フラッシュしない
    } // 文字は転送される。std::cout はフラッシュしない

### 出力

    Hello,
    World!
    Greetings.

## バージョン

### 言語

- C++20

### 処理系

- Clang: ??
- GCC: 11.1 ✅
- Visual C++: 2019 update 10 ✅

## 参照

- P0053R7 C++ Synchronized Buffered Ostream