C++奇怪的命名空间查找行为
C++ strange namespace lookup behavior
namespace fooo {
class Fooo {
public:
int a;
};
}
namespace fooo {
class Test {
public:
Test(Fooo::Fooo *i) {
i->a = 1;
}
};
}
这段代码在 clang (任何版本)中编译良好,但在 gcc 中失败。谁能解释为什么?
编辑:是的,我知道这里的问题有点明显,但为什么 clang 接受它?告诉我这个的人说这是标准中的一个错误,并且有缺陷报告。任何人都可以指出实际的DR吗?
来自 gcc 的错误消息准确地告诉您问题所在:
t.cpp:11:16: error: ‘fooo::Fooo::Fooo’ names the constructor, not the type
Test(const Fooo::Fooo *i) {
^
令人惊讶的是,Clang没有给出错误。
相关文章:
- 在类设计中查找外部命名空间中的重载运算符
- 运算符<<依赖于参数的查找不在全局命名空间中查找
- 使用 dlsym 查找命名空间中符号的符号
- C++嵌套的"命名空间""使用"名称查找首选项顺序
- 范围运算符需要查找 std 命名空间而不是提升
- C++奇怪的命名空间查找行为
- 为什么在语句"std::cout << std::endl;"中使用时需要命名空间限定,给定依赖于参数的查找?
- C++如何知道在哪里查找使用 "using namespace ..." 指定的命名空间?
- 依赖于参数的查找在来自另一个命名空间的别名类型上意外行为
- 模板类继承命名空间的名称查找
- 依赖于参数的名称查找:添加要查找的额外命名空间
- 是否应该延迟类成员访问表达式中依赖类/命名空间名称的名称查找
- 在查找命名空间名称的过程中,可以考虑与命名空间名称不同的其他名称
- 强制名称查找以考虑命名空间范围
- 是否应该延迟类模板定义中由 this-> 限定的类/命名空间名称的名称查找?
- 嵌套名称说明符中第一个命名空间名称的名称查找
- 在查找期间在std命名空间中拖动外部命名空间
- c++,命名空间,对继承类和Qt的名称查找
- 非限定名称查找查找内联命名空间成员
- 顶级命名空间中类的参数依赖查找