使用声明不能命名命名空间

2 c++ namespaces using c++17

如果我有这样的文件,一切都会按预期进行:

#include <filesystem>
#include <iostream>
int main() {
   std::filesystem::path o = "C:\\Windows\\write.exe";
   auto s = o.parent_path();
   std::cout << s << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果可能,我想使用这样的行:

filesystem::path o = "C:\\Windows\\write.exe";
Run Code Online (Sandbox Code Playgroud)

我试过这个,但我收到一个错误:

// using-declaration may not name namespace 'std::filesystem'
using std::filesystem;
Run Code Online (Sandbox Code Playgroud)

也有错误:

using namespace std::filesystem;
// error: 'filesystem' has not been declared
filesystem::path o = "C:\\Windows\\write.exe";
Run Code Online (Sandbox Code Playgroud)

有可能做我正在尝试的事情吗?

Vla*_*cow 7

您可以使用命名空间别名,如

namespace filesystem = std::filesystem;
Run Code Online (Sandbox Code Playgroud)

这是一个演示程序

#include <iostream>

namespace A
{
    namespace B
    {
        int x;
    }
}

int main() 
{
    namespace B = A::B;
    
    B::x = 10;
    
    std::cout << B::x << '\n';
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的输出是

10
Run Code Online (Sandbox Code Playgroud)