- ostream[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp20[meta cpp]
namespace std {
template<class charT, class traits>
basic_ostream<charT, traits>& flush_emit(basic_ostream<charT, traits>& os);
}
このマニピュレータは、実際にはstd::basic_osyncstream
に対して使用されることが期待される。それ以外の場合、このマニピュレータはstd::flush
と等価である。
このマニピュレータは、std::basic_osyncstream
のオブジェクトにflush
を記録し、文字を転送する。ここで、通常flush
をしただけでは文字は転送されないようになっていることに注意。この設定(同期時排出ポリシー)を変更するために、emit_on_flush
、noemit_on_flush
といったマニピュレータが用意されている。
os.flush()
を呼び出す。
続いてos.rdbuf()
がstd::basic_syncbuf<charT, traits, Allocator>*
である場合、これをbuf
とすると、buf->emit()
を呼び出す。
os
本関数は、直接呼ぶのではなく、マニピュレータ関数へのポインタを引数に取る出力演算子(operator<<
、挿入演算子、インサータとも呼ばれる)を通じて呼び出されるのが一般的である。
#include <iostream>
#include <syncstream>
int main()
{
std::osyncstream bout{std::cout};
bout << "Hello, World!";
bout << std::flush_emit; // 通常はここで保留中の文字は転送されないが、
// ここで文字が転送される。
// なお、同期時排出ポリシーは false のままである。
}
- flush_emit[color ff0000]
Hello, World!
- C++20