Re: внутр. компоновка
От: ruslan_abdikeev Россия http://aruslan.nm.ru
Дата: 21.02.03 10:41
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

LL>В стандарте сказано, что функция, впервые объявленная другом, имеет внешнюю компоновку. Что происходит, если я пишу

LL>
LL>//cl.h
LL>class A{
LL>    friend void fun();//так как по аргументам функцию не найти, то я ее могу
LL>//теперь спрятать в какой-то единице трансляции, задав ей статическую
LL>//компоновку
LL>};
LL>//some_cpp.cpp
LL>#include “cl.h”
LL>static void fun(){

Это ошибка: одно и то же имя не может одновременно иметь internal и external linkage.

LL>///
LL>}
LL>

LL>Другом будет эта fun с внутренне компоновкой?

Нет. Код некорректен.

LL>А что произойдет, если я объявлю функцию не static, а в безымянном namespace?


Это будет просто функция в безымянном namespace.
А вот функция, объявленная в глобальном namespace и будет другом.

Руслан
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.