Niepowodzenie kompilacji, jeśli wartość zwracana jest nieużywana dla określonego typu

Chciałbym, aby kompilacja nie powiodła się dla niektórych wywołań funkcji, ale nie dla innych. Wywołanie funkcji, które chcę zawieść, to te, które nie obsługują wartości zwracanych, gdy wartość jest określonego typu. W poniższym przykładzie nie obsługujemy zwracania funkcjiError jest błędem kompilacji, ale nieobsługiwanie funkcji zwracającej cokolwiek innego powinno się udać.

Uwaga: nasze środowisko wykonawcze (osadzone) nie pozwala nam używać następujących konstrukcji: RTTI, wyjątki.

Ten kod wymaga tylko kompilatora z Clang, wolałbym nie dodawać adnotacji do każdej funkcji.

Preferujemy rozwiązanie, które nie działa w czasie kompilacji, a nie w czasie wykonywania.

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

questionAnswers(3)

yourAnswerToTheQuestion