Warum wird "operator void" bei der Cast-Syntax nicht aufgerufen?

Während des Spielens mitdiese Antwort durchuser GMan Ich habe das folgende (mit Visual C ++ 9 kompilierte) Snippet erstellt:

 class Class {
 public:
     operator void() {}
 };

 Class object;
 static_cast<void>( object );
 (void)object;
 object.operator void();

achdem ich mit dem Debugger vorbeigekommen war, fand ich heraus, dass das Casting aufvoid ruft @ nicht aClass::operator void(), nur der dritte Aufruf (mit explizitem Aufruf des Operators) ruft den Operator tatsächlich auf, die beiden Casts tun einfach nichts.

Warum ist deroperator void nicht mit der Cast-Syntax aufgerufen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage