如果我有一个这样的文件,一切都会按预期运行: #include <filesystem>int main() { auto s = o.parent_path();} 但是,如果可能的话,我想使用下面这样的一行: filesystem::path o = "C:\\Windows\\write.exe
using namespace C;
}由于x指令,我期望C::X的类型是using namespace,但是VS2010和在线LLVM/Clang编译器将命名空间使用using声明(using C::X)更改using指令,然后按预期将其解析为C::X。标准规定使用指令7.3.4.2
A using-指令指定指定命名空间中的名称可以在using-指令之后出现的using-指令出现的范围中使用。在非
prog.cpp:16:9: error: too many arguments to function ‘void ns2::foo()’
使用-指令指定指定命名空间中的名称可以在使用在非限定名称查找(3.4.1)期间,名称似乎是在最近的封闭名称空间中声明的,其中包含using-指令和指定的命名空间。注意:在这方面,“”的意思是“直接或间接地包含”。为什么名称空间ns1的名称不能直接
语法:告诉编译器从命名空间x中查找符号。一旦在两个命名空间中有相同的符号,并且您希望相互使用它们,情况就会变得很糟糕。有没有办法告诉编译器不要使用命名空间?我的意思是这样的(名称空间x和y都有函数a)int k = a(); //x::a is called
drop namespace x; //imaginary