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;
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage