Если у меня есть заголовок с:
namespace outer {
inline namespace inner {
void func();
}
}
Тогда я не могу определить func()
в отдельном. cpp файле, так как это дает мне ошибку компиляции:
- undefined reference to 'outer::inner::func()'
Так же, как если бы я объявил функцию встроенной. Это правильно? Означает ли это, что встраивание пространства имен неявно включает его функции. Я попытался посмотреть на https://en.cppreference.com/w/cpp/language/namespace, но нигде не смог найти, что это прямо указано.
РЕДАКТИРОВАТЬ 2: Не обращать внимания, предыдущее редактирование. Мне не удалось правильно настроить мой файл cmake и, следовательно, я не смог скомпилировать код. Смотрите ответ за ответ на оригинальный вопрос. Спасибо всем!
РЕДАКТИРОВАТЬ:
Вот пример, который я не могу скомпилировать:
Test.h
namespace Core {
inline namespace TestNameSpace {
void write();
}
}
Test . cpp
#include <iostream>
#include "Test.h"
void Core::write() {
std::cout << "BAJS\n";
}
main. cpp
#include "Test.h"
int main() {
Core::write();
return 0;
}
Следует отметить, что #include "Test.h"
отображается серым в моей среде IDE в файле Test. cpp.