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