связь функции с параметром из безымянного пространства имен

namespace { class A { } ; }

void foo ( A ) // _Z3fooN12_GLOBAL__N_11AE
{ ; }

символ функции, по-видимому, будет ссылаться на имя A, которое является членом одноименного пространства имен (из-за этот).

что такое связь с фу?

2

Решение

Функция foo имеет внешнюю связь, так как она глобальная и не объявлена static, Связь функции не зависит от параметров.

Дело в том, что A имеет внутреннюю связь означает, что это не возможно позвонить foo из другого блока перевода, так как невозможно объявить foo в другой единице перевода, так как нет способа написать имя типа fooпараметр. Любая попытка определить A в другой единице перевода фактически определит другой тип.

Поэтому пока название foo технически имеет внешнюю связь, на нее не могут ссылаться другие переводческие единицы.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]