Следующий код не компилируется:
struct X {
friend class Y;
Y* ptr;
};
В cppreference описывается ситуация как
... Если имя класса, которое используется в объявлении друга, еще не объявлено, оно объявляется прямо на месте.
Если "пятно" означает, где объявляется связь друга, тогда должно быть хорошо объявить член Y* ptr
. Почему он не компилируется? Где в стандарте запрещается это?