私はSOの方法でここを読んだ:
C++ の場合:
- 非 void 関数から戻らないことは、未定義の動作です。
... analysis requires inspection of the entire program, which is incompatible with separate compilation, and which is not even possible in the general case ...
そのページのいくつかの回答から私が作成したことから、関数内の return ステートメントの存在を確認することは困難であり、実際には不可能な場合もあります。非 void 関数から返されないということは、C++ 標準によって未定義の動作のままでした。
しかし、Java ではコンパイル時に同じことがエラーとして報告されると聞きました。
Q. 私の理解は正しいですか?そして、Javaはどのように同じことを達成しますか?
編集:明確にするために、私は理解に興味があります:
コンパイラに関連する実装の問題のために C++ 標準で未定義のままにされた場合、Java はどのようにして同じことを達成できるのでしょうか。
そして、それがそれほど難しくないのであれば、C++ 標準はそれをエラーとして定義すべきではないでしょうか?