• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <syncstream>

    std::basic_syncbuf::sync

    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

    処理系

    参照