Как я могу использовать структуры и функции из анонимного namespace?
Грубо говоря, есть несколько "служебных" структур и функций, которые используются внутри класса (и только в этом файле) и наружу торчать не должны. Хочу их скрыть с помощью анонимного namespace'а, но, если оставлю анонимный namespace в .h файле, то попадаю на нарушение ODR (насколько я понимаю) Вынести в .cpp файл не могу, попадаю на incomplete type.
Если более кратко, есть подобная конструкция:
namespace a {
namespace {
struct ex {
int a;
...
}
void foo() { ... };
}
class F {
ex data[4];
public:
f() { foo(); }
}
}
Я хочу, чтобы структура ex и функция foo() не были доступны для использования из другого файла, но также хочу использовать их в классе F. Как это должно работать?