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