c ++中的隐式命名空间解析

时间:2015-08-07 14:07:10

标签: c++ namespaces

我想知道为什么以下剪辑的C ++代码编译没有错误:

namespace ns {
    struct foo {};
    void stuff(void*x) {}
}
int main() {
    ns::foo x;
    stuff(&x);
}

我认为必须将命名空间限定符放在stuff前面,而且如果我用int x替换变量x,则会出现错误。似乎编译器从其参数的类型中推导出stuff所属的命名空间,这对我来说没有意义。用GCC 4.2.1和4.8.3进行测试

0 个答案:

没有答案