Рассмотрим этот код:
class Addressable;
class Class1 { void foo(Addressable &a) { (void) &a; } }; // OK
class Addressable { void *operator &() { return this; } };
class Class2 { void foo(Addressable &a) { (void) &a; } }; // Error: operator & private
Почему С++ разрешает использовать адрес неполного ссылочного типа?
Не может ли это быть незаконным, как показано выше? Это намеренно?