Есть ли способ вызвать функцию из безымянного пространства имен в такой ситуации?
Нет, не в вашем случае.
Пространства имен Anonymous / UnNamed позволяют переменным и функциям быть видимыми во всей единице перевода , но внешне не видны.Хотя сущности в безымянном пространстве имен могут иметь внешнюю связь, они фактически квалифицируются по имени, уникальному для их единицы перевода, и поэтому никогда не могут быть видны из любой другой единицы перевода.
Это означает, что ваша функция funkcja
внутри Безымянного пространства имен видна в блоке перевода, который определяет глобальную функцию funkcja
.Это вызывает две одинаковые именованные функции, определенные в глобальной области видимости и, таким образом, вызывает ошибку переопределения.
Если бы funkcja
присутствовал только в вашем Пространстве имен без имен, вы бы смогли вызвать его по ::funkcja
, как это было бы в вашей глобальной области видимости.В заключение можно вызвать функции в пространстве имен UnNamed в зависимости от области, в которой присутствует пространство имен UnNamed.