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?

questionAnswers(1)

yourAnswerToTheQuestion