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?