Код: Выделить всё
#include
struct Foo{
operator void () {
std::cout (все же не уверен, что это имеет смысл), но после прочтения этого Вопрос я узнал, что это возможно, по крайней мере, через static_cast Теперь мой вопрос ... < /p>
Код: Выделить всё
void foo() {
Foo f;
//return f; // A // not allowed
return static_cast(f); // B // OK
return (void) f; // C // OK
}
int main() {
foo();
}
< /code>
[list]
[*] Почему не разрешено? (Если бы я заменил void [*] Почему ни B, ни C не вызывают моего оператора конверсии? (Опять же, если бы я заменил void на int Все три версии позвонит моему оператору int ).
[*] Я мог бы признать, что это путь Casting to void работает, но тогда мне разрешено определить оператор void , когда он не используется, как я бы ожидал?
[/list]
Подробнее здесь: https://stackoverflow.com/questions/433 ... ce-to-void
Мобильная версия