(ошибка объявления). Разным компиляторам разрешено разбирать код по-разному, поэтому им разрешено выдавать разные сообщения об ошибках. Я не нахожу ничего плохого в этом сообщении об ошибке.

ние неизвестного друга

template<typename T>
class List
{
protected:

    class a {
        int x;
        int y;
    private:
        friend class b;  // <------------ Why this is not an error? 
    };

    template <typename U > class b {  //If that is not a error this should be an error
        int z;
        U y;
    };

    public:
        List() {
            a* ptr = (a *)new unsigned char[sizeof(a)];
        }
};

int main() {
    List<int>  mylist;
}

Пожалуйста, перейдите по этой ссылке, у меня есть мои вопросы в виде комментариев в коде. Я пытаюсь сделать другого класса другом моего класса. Но этот класс не знаю, когда заводить друзей. Что такое правило C ++, которое допускает это? Позже я определю этот класс таким образом, чтобы он был несовместим с объявлением друга. Почему это не выдает ошибку. Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос