В С++ размещение функции или переменной в анонимном пространстве имен делает ее взаимосвязь внутренней, i. е. то же, что и объявление static
на уровне файла, но идиоматический С++.
Как насчет анонимного пространства имен в обычном пространстве имен? Гарантирует ли это внутреннюю связь?
// 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?
}
}
}