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

履歴 編集

function template
<ostream>

std::flush_emit(C++20)

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_flushnoemit_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 のままである。
}

出力

Hello, World!

バージョン

言語

  • C++20

参照