最終更新日時(UTC):
が更新

履歴 編集

function
<syncstream>

std::basic_syncbuf::sync(C++20)

protected:
int sync() override;

概要

フラッシュが保留されていることを記録する。その後、同期時排出ポリシーに応じてemit()を呼び出す。同期時排出ポリシーはset_emit_on_sync()で変更することができる。

効果

ラップされたストリームバッファがフラッシュされることを記録する。
その後、同期時排出ポリシーがtrueならば、emit()を呼び出す。

戻り値

emit()が呼び出されてfalseを戻した場合は、-1、そうでなければ 0 を返す。

備考

同期時排出ポリシーがfalseの場合、実際のフラッシュはemit()が呼び出されるまで遅延する。

#include <iostream>
#include <syncstream>

int main()
{
  std::osyncstream bout{std::cout};
  bout << "Hello, World!";
  bout.flush();  // この例では、flush() が rdbuf()->pubsync() を呼び出し、これが rdbuf()->sync() を呼び出している。
                 // 非同期排出ポリシーはデフォルトで false なので、ここでは rdbuf()->emit() は呼ばれず、
                 // 実際のフラッシュは、bout 破棄時に rdbuf()->emit() が呼び出されるまで遅延される。
}

出力

Hello, World!

バージョン

言語

  • C++20

処理系

参照