Как выносить под-пространства имён по разным файлам?

Всем привет;

Хочу написать пространство имён, а его подпространства вынести в отдельные файлы;

Имеется запись:

#ifndef SPECTRE_HPP
#define SPECTRE_HPP

namespace Spectre
{
    namespace Math
    {
        
    }
} 

#endif SPECTRE_HPP

Как можно перенести пространство Math в другой файл так, чтобы в самом проекте я мог подключить только Spectre.hpp и при этом иметь доступ ко всем его подпространства (Math and other)?

Например (main.cpp):

#include "spectre.hpp"
using namespace Spectre;

int main()
{
    double local_pi = Math::PI;
}

Ответы (1 шт):

Автор решения: αλεχολυτ

math.h:

namespace Math {}

other.h:

namespace Other {}

spectre.h:

namespace Spectre {
    #include "math.h"
    #include "other.h"
}

Это если нужно иметь возможность включать math, other в другие пространства имён. Но обычно такое не требуется и при разнесении по файлам сразу указывают полностью пространства имён:

math.h:

namespace Spectre::Math {}

other.h:

namespace Spectre::Other {}

spectre.h:

#include "math.h"
#include "other.h"
→ Ссылка