Kompilierung fehlgeschlagen, wenn der Rückgabewert für einen bestimmten Typ nicht verwendet wird
Ich möchte die Kompilierung für einige Funktionsaufrufe fehlschlagen lassen, für andere jedoch nicht. Der Funktionsaufruf, den ich fehlschlagen möchte, behandelt keine Rückgabewerte, wenn der Wert von einem bestimmten Typ ist. Im folgenden Beispiel wird eine zurückgegebene Funktion nicht verarbeitetError
ist ein Kompilierungsfehler, aber nicht die Behandlung einer Funktion, die etwas anderes zurückgibt, sollte in Ordnung sein.
Hinweis: In unserer Laufzeitumgebung (eingebettet) können wir die folgenden Konstrukte nicht verwenden: RTTI, Ausnahmen.
Dieser Code muss nur mit Clang compiliert werden. Ich würde es vorziehen, nicht jede Funktion mit Anmerkungen zu versehen.
Wir bevorzugen eine Lösung, die nicht zur Laufzeit, sondern zur Kompilierungszeit fehlschlägt.
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;
}