この質問のサンプル コードを調べたとき、未定義の動作が原因で、その後の の使用を妨げていたと思いましたstd::cout
。しかし、null ポインターを出力しようとすると、ストリーム状態に設定され、std::ios_base::badbit
std::ios_base::failbit
操作不能になる本当の原因であることが判明しました。このため、null ポインターを出力する (試行する) のが本当に未定義の動作であるかどうかに興味があります。だからここに私の質問があります:
nullポインタを出力するのは未定義の動作ですか? もしそうなら、これを引き起こすのはストリームインサーターについて何ですか? インサーターは、ヌルポインターを逆参照しないほど十分にスマートであると確信しています。
また、このコンテキストでヌルポインターに遭遇したときにインサーターがエラーマスクを設定する理由 (具体的には ) も知りたい
badbit
です。文字列リテラルの終了のように扱わないのはなぜですか?
私は標準を手元に持っていません。残念ながらリンク切れにつながったソースは 1 つしか見つかりませんでした。