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

Сообщение Re[3]: Почему нельзя предварительно объявить дружественную ф от 24.09.2023 19:57

Изменено 24.09.2023 20:14 rg45

Re[3]: Почему нельзя предварительно объявить дружественную ф
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Мне нужно указать в качестве дружественной функцию, которая является членом класса, а не просто пространства имен.


Блин. Ну ты же апеллируешь к тому, что свободные функции, якобы, можно объявлять дружественными без предварительного объявления. Вот я тебе и показываю, что твои апелляции безосновательны, потому что, в общем случае, свободную функцию тоже сначала нужно объявить, прежде чем ее можно будет объявить дружественной:

http://coliru.stacked-crooked.com/a/5da8e14983baa2f4

namespace ns
{

void foo();
    
} // namespace ns

struct A
{
    friend void ns::foo(); // Ok
    friend void ns::bar(); // error: 'void ns::bar()' should have been declared inside 'ns'
};


Исключением являются только функции из того же пространства имен, что и класс. Нужно объяснять, почему подобное исключение невозможно сделать для функций-членов, или сам напряжешь извилину?
Re[3]: Почему нельзя предварительно объявить дружественную ф
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Мне нужно указать в качестве дружественной функцию, которая является членом класса, а не просто пространства имен.


Блин. Ну ты же апеллируешь к тому, что свободные функции, якобы, можно объявлять дружественными без предварительного объявления. Вот я тебе и показываю, что твои апелляции безосновательны, потому что, в общем случае, свободную функцию тоже сначала нужно объявить, прежде чем ее можно будет объявить дружественной:

http://coliru.stacked-crooked.com/a/5da8e14983baa2f4

namespace ns
{

void foo();
    
} // namespace ns

struct A
{
    friend void ns::foo(); // Ok
    friend void ns::bar(); // error: 'void ns::bar()' should have been declared inside 'ns'
};


Исключением являются только функции из того же пространства имен, что и класс. Нужно объяснять, почему подобное исключение невозможно сделать для дружественных функций-членов, или сам напряжешь извилину?