- syncstream[meta header]
- function[meta id-type]
- std[meta namespace]
- basic_syncbuf[meta class]
- cpp20[meta cpp]
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
- Clang: ??
- GCC: 11.1 [mark verified]
- Visual C++: 2019 update 10 [mark verified]