Информация об изменениях

Сообщение Re[3]: Вопрос по стандартному unique_ptr от 09.07.2023 6:00

Изменено 09.07.2023 6:07 rg45

Re[3]: Вопрос по стандартному unique_ptr
Здравствуйте, Shmj, Вы писали:


S>Благодарю. Чего-то протупил — поиском не нашел.


S>И можно еще вопрос. Вот в этом же классе есть:


S>
S>template <class _Ty, class _Dx>
S>class unique_ptr
S>{
S>// ...
S>private:
S>    template <class, class>
S>    friend class unique_ptr;
S>};
S>


S>Зачем во friend добавляет сам себя? Вот что думает GPT- что это ошибка или недоразумение:


Смотри, это не просто класс, а шаблон класса, от которого можно произвести множество разных воплощений, которые не являются дружественными друг другу автоматически. Этим объявлением как раз и говорится, что все воплощения данного шаблона являются дружественными друг другу.
Re[3]: Вопрос по стандартному unique_ptr
Здравствуйте, Shmj, Вы писали:


S>Благодарю. Чего-то протупил — поиском не нашел.


S>И можно еще вопрос. Вот в этом же классе есть:


S>
S>template <class _Ty, class _Dx>
S>class unique_ptr
S>{
S>// ...
S>private:
S>    template <class, class>
S>    friend class unique_ptr;
S>};
S>


S>Зачем во friend добавляет сам себя? Вот что думает GPT- что это ошибка или недоразумение:


Смотри, это не просто класс, а шаблон класса, от которого можно произвести множество разных воплощений, которые не являются дружественными друг другу автоматически. Этим объявлением как раз и говорится, что все воплощения данного шаблона являются дружественными друг другу.

P.S. Хорошо ли они делают — это вопрос, на самом деле. Лично я к таким объявлениям отношусь с настороженностью. Ведь с таким объявлением приватный доступ взламывается "на раз" путем добавления какой-нибудь специализации-пустышки. Когда у меня возникает соблазн написать подобное всеобъемлющее объявление дружбы, я превым делом проверяю, все ли у меня в порядке с дизайном.