Namespaces
Variants

C++ named requirements: UnformattedOutputFunction

From cppreference.net
C++ named requirements

要件

UnformattedOutputFunction は、以下の処理を実行するストリーム出力関数です:

1) 自動ストレージ期間を持つ basic_ostream::sentry 型のオブジェクトを構築し、以下の処理を実行する:
  • 出力ストリームで eofbit または badbit が設定されている場合、 failbit も設定する。さらに、この出力ストリームの 例外マスク ( ( exceptions ( ) & failbit ) ! = 0 ) で failbit に対する例外が有効になっている場合、 ios_base::failure をスローする。
  • 該当する場合、tie()された出力ストリームをフラッシュする。
2) セントリの状態を sentry::operator bool() を呼び出してチェックします。これは basic_ios::good と同等です。
  • 演算子が false を返すか、セントリのコンストラクタが例外をスローした場合、出力は行われません。
  • 演算子が true を返した場合、 rdbuf ( ) - > sputc ( ) を呼び出すかのように、文字を出力ストリームに挿入して所望の出力を実行しようと試みます。 std::basic_ostream の他の公開メンバも使用できますが、 rdbuf ( ) の仮想メンバのうち、 overflow() xsputn() sync() を除くものは決して呼び出されません。
  • 出力中に例外がスローされた場合、出力ストリームの badbit を設定します。このストリームの 例外マスク badbit に対する例外が有効になっている場合( ( exceptions ( ) & badbit ) ! = 0 )、例外は再スローされます。
  • 例外がスローされなかった場合、関数で指定された値を返します。
3) いずれの場合も、例外による終了または戻り値による終了を問わず、セントリーのデストラクタはこの関数を抜ける前に呼び出されます。

標準ライブラリ

以下の標準ライブラリ関数は UnformattedOutputFunction s です。

**注記**: このページのテキストは既にC++の専門用語とコード要素で構成されており、翻訳対象となる自然言語のテキストが含まれていません。上記のHTML構造はすべてのタグと属性、および タグ内のC++コードを保持したまま表示されています。
(C++11以降)

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 63 C++98 例外処理ポリシーが欠落していた 追加された
LWG 160 C++98 捕捉された例外が再スローされるかどうかを
決定する処理において、存在しない関数 exception() が言及されていた
exceptions() に修正
LWG 165 C++98 rdbuf ( ) に対して呼び出しが許可されていた
仮想メンバ関数は overflow() のみだった
xsputn() および sync()
も許可