Если вы хотите поместить определения функций в файлы заголовков, похоже, есть три разных решения:
inline
static
(До недавнего времени я даже не знал о №1.) Так в чем же различия между этими решениями, и когда я должен предпочесть какое? Я нахожусь в мире только заголовков, поэтому мне действительно нужны определения в файлах заголовков.
Вы могли рассмотреть обертывание методов в классе вместо пространства имен. Объявите эти методы как статичные и удалите конструктора класса для укрепления этого, это не объект, который инстанцируют.
struct FooNamespace
{
FooNamespace() = delete;
static FooMethod1() {
...
}
static FooMethod2() {
...
}
};
Вы получаете то же общее поведение как он принадлежащий пространству имен только с единственной реализацией.