Falha na compilação se o valor de retorno não for usado para um determinado tipo

Eu gostaria de fazer a compilação falhar para alguma chamada de função, mas não para outras. A chamada de função que desejo falhar são aquelas que não manipulam valores de retorno quando o valor é de um determinado tipo. No exemplo abaixo, não manipulando uma função retornandoError é um erro de compilação, mas não manipular uma função que retorna qualquer outra coisa deve ser bem sucedida.

Nota: nosso ambiente de tempo de execução (incorporado) não nos permite usar as seguintes construções: RTTI, exceções.

Este código só precisa de compilador com o Clang, eu prefiro não ter que anotar cada função.

Nós preferimos uma solução que falhe em tempo de compilação em vez de em tempo de execução.

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