一部の関数呼び出しではコンパイルを失敗させたいが、他の関数呼び出しでは失敗させたい。失敗させたい関数呼び出しは、値が特定のタイプの場合に戻り値を処理しない関数呼び出しです。以下の例でError
は、返される関数を処理しないことはコンパイルエラーですが、他のものを返す関数を処理しないことは問題なく成功するはずです。
注:ランタイム環境(組み込み)では、次の構成を使用できません:RTTI、例外。
このコードはClangでコンパイラーする必要があるだけで、各関数に注釈を付ける必要はありません。
実行時ではなくコンパイル時に失敗するソリューションをお勧めします。
enum class Error {
INVAL,
NOERR,
};
// do something that can fail.
Error DoThing();
// may return different return codes, we never care (we can't change prototype)
int DoIgnoredThing();
int main() {
DoThing(); // compilation failure here, unused "Error" result
DoIgnoredThing(); // compilation succeeds, OK to ignore unused "int" result
return 0;
}