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