¿Se puede declarar una función C ++ de modo que el valor de retorno no se pueda ignorar?
Estoy tratando de determinar si una función C ++ puede declararse de tal manera que el valor de retorno no pueda ignorarse (idealmente detectado en tiempo de compilación). Traté de declarar una clase con unprivate
(o en C ++ 11,delete
re)operator void()
para tratar de atrapar la conversión implícita a vacío cuando un valor de retorno no se utiliza.
Aquí hay un programa de ejemplo:
class Unignorable {
operator void();
};
Unignorable foo()
{
return Unignorable();
}
int main()
{
foo();
return 0;
}
Desafortunadamente, mi compilador (clang-703.0.31) dice:
test.cpp:2:5: warning: conversion function converting 'Unignorable' to 'void' will never be used
operator void();
^
y no genera ningún error o advertencia en la llamada afoo()
. Entonces, eso no funcionará. Hay alguna otra manera de hacer esto? Las respuestas específicas a C ++ 11 o C ++ 14 o posterior estarían bien.