Сбой компиляции, если возвращаемое значение не используется для определенного типа

Я хотел бы, чтобы компиляция не удалась для некоторых функций, но не для других. Вызов функции, который я хочу потерпеть неудачу, это те, которые не обрабатывают возвращаемые значения, когда значение имеет определенный тип. В приведенном ниже примере не обрабатывается функция, возвращающая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;
}

Ответы на вопрос(3)

Ваш ответ на вопрос