¿Por qué no se invoca "operador vacío" con la sintaxis de conversión?
Mientras jugaba conesta respuesta porusuario GMan Creé el siguiente fragmento (compilado con Visual C ++ 9):
class Class {
public:
operator void() {}
};
Class object;
static_cast<void>( object );
(void)object;
object.operator void();
después de pasar con el depurador descubrí que el casting paravoid
no invocaClass::operator void()
, solo la tercera invocación (con la invocación explícita del operador) en realidad invoca al operador, los dos lanzamientos simplemente no hacen nada.
Porque es eloperator void
no invocado con la sintaxis de reparto?