C++ では、適切に定義されたものと定義されていないものの中間にあるものがあります。具体的には、実装定義および未指定と呼ばれます。今、私は特定されていないものに興味があります。
そのような機能を使用してもよい場合と、使用を避けるべき場合はいつですか? 正しいコードの一部である不特定の動作の良い例はありますか? ソフトウェアを作成するときに、それが最善の選択であるとすれば、それはいつですか?
Matt McNabb によって提供された定義:
未定義 - 何でも起こり得る
実装定義 - 有限数の結果が可能であり、コンパイラのドキュメントには何が起こるかを記載する必要があります
未指定- 有限数の結果が可能です -- 通常、規格は可能な結果のセットを記述します
明確に定義されている - 上記のいずれでもない
整形式プログラム - エラーなしでコンパイルされるプログラム (未定義の動作を示す可能性があります)
フォローアップの質問:
緩和されたアトミックは未指定または明確に定義されたものとしてカウントされますか?