Por que o “operador nulo” não é chamado com sintaxe de conversão?
Enquanto brinca comesta resposta porusuário GMan Criei o seguinte snippet (compilado com o Visual C ++ 9):
class Class {
public:
operator void() {}
};
Class object;
static_cast<void>( object );
(void)object;
object.operator void();
depois de passar por cima do depurador, descobri que o elenco paravoid
não invocaClass::operator void()
, apenas a terceira chamada (com a chamada explícita do operador) realmente chama o operador, os dois lançamentos simplesmente não fazem nada.
Porque é ooperator void
não é chamado com a sintaxe do elenco?