Почему «оператор void» не вызывается с синтаксисом приведения?
Играя сэтот ответ отпользователь GMan Я создал следующий фрагмент (скомпилированный с Visual C ++ 9):
class Class {
public:
operator void() {}
};
Class object;
static_cast<void>( object );
(void)object;
object.operator void();
перешагнув через отладчик, я обнаружил, чтоvoid
не вызываетClass::operator void()
только третий вызов (с явным вызовом оператора) фактически вызывает оператор, два приведения просто ничего не делают.
Почемуoperator void
не вызывается с синтаксисом приведения?