namespace { class A { } ; }
void foo ( A ) // _Z3fooN12_GLOBAL__N_11AE
{ ; }
символ функции, по-видимому, будет ссылаться на имя A, которое является членом одноименного пространства имен (из-за этот).
что такое связь с фу?
Функция foo
имеет внешнюю связь, так как она глобальная и не объявлена static
, Связь функции не зависит от параметров.
Дело в том, что A
имеет внутреннюю связь означает, что это не возможно позвонить foo
из другого блока перевода, так как невозможно объявить foo
в другой единице перевода, так как нет способа написать имя типа foo
параметр. Любая попытка определить A
в другой единице перевода фактически определит другой тип.
Поэтому пока название foo
технически имеет внешнюю связь, на нее не могут ссылаться другие переводческие единицы.
Других решений пока нет …