Скажем, у меня есть пространство имен Util, которое содержит некоторые основные функции. Но в этом пространстве имен мне нужны функциональные возможности библиотеки для выполнения моей работы, однако я не хочу, чтобы файл заголовка знал об этом, поэтому я в конечном итоге создаю анонимное пространство имен с функциональностью, которая мне нужна, но не хочу раскрывать. Есть лучший способ сделать это ?
Например:
# Util.h
namespace Util{ int Add(); }
# Util.cpp
namespace Util{
namespace {
funkyInt Add_internal(int x, int y);
int convert(funkyInt x);
}
int Add(int x, int y){
return convert(Add_internal(x,y))
}
funkyInt Add_internal(int x, int y){
//DOSomething
}
}
Я не совсем уверен. Меня беспокоит, что где-то в одном месте мне придется столкнуться с накладными расходами, которых я не предвидел
Осторожно, пространство имен необходимо повторно открыть, иначе вы на самом деле не определяете ту же статическую функцию wandbox.org/permlink/jqy55qRzsLNPYrhM





Это прекрасно.
Независимо от того, находится ли анонимное пространство имен в вашем пространстве имен или в глобальном, - это вкус и простота.
это в значительной степени именно то, для чего нужны анонимные пространства имен. Как вы думаете, почему такой подход может вызвать проблемы?