В C ++ помещение функции или переменной в анонимное пространство имен делает ее связывание внутренним, то есть таким же, как объявление ее static
на уровне файла, но идиоматическим C ++ .
А как насчет анонимного пространства имен внутри обычного пространства имен? Гарантирует ли это внутренняя связь?
// foo.cpp
void func1() {
// external linkage
}
static void func2() {
// internal linkage
}
namespace {
void func3() {
// internal linkage
}
}
namespace ns1 {
void func4() {
// external linkage
}
namespace {
void func3() {
// still internal linkage?
}
}
}