これはばかげた質問のように思えますが、今日、戻り値と int を想定しているが常にそうとは限らないメンバー関数を C++ で作成しました。値を返さない非常に単純な関数も作成しました...
int derp()
{
if (11 == 22) return 0;
}
これは最近の変更ですか?私のコンパイラは壊れていますか?笑
編集:これはところでコンパイルされます
これはばかげた質問のように思えますが、今日、戻り値と int を想定しているが常にそうとは限らないメンバー関数を C++ で作成しました。値を返さない非常に単純な関数も作成しました...
int derp()
{
if (11 == 22) return 0;
}
これは最近の変更ですか?私のコンパイラは壊れていますか?笑
編集:これはところでコンパイルされます
非 void 関数では、すべての制御パスが戻る必要があります。ここでの重要な問題は、コンパイラが診断する必要がないことです。compileとis correctは必ずしも同じではないことに注意してください。すべての正しいコードがコンパイルされますが、コンパイルされるすべてのコードが正しいわけではありません。
いいえ、C++ ではすべての制御パスが値を返す必要はありませんでした。C++11 および C++03 でも (構文的に) 有効です。
一部のコンパイラは、リターンが欠落しているほとんどの状況を検出できますが、診断は必要ありません。返される制御パスが少なくともある場合、ほとんどは診断を発行しません。
どう見てもUBです。