限定名称和使用声明的clang错误消息

时间:2019-04-15 10:25:41

标签: c++ compiler-errors namespaces clang name-lookup

请考虑以下代码。

namespace A::B::C::D::E {
    struct X { };
}

namespace B {
    using namespace A::B::C::D::E;
    // or, using A::B::C::D::E::X;
    // or, using X = A::B::C::D::E::X;
}

假设我以某种方式错误地使用了B :: X并收到错误消息。至少在clang中,该错误看起来像

error: ... for type A::B::C::D::E::X

我宁愿指出B::X的错误。

是否可以将clang错误消息配置为使用using声明的位置而不是别名实体?

1 个答案:

答案 0 :(得分:0)

我认为编译器使用A :: B :: C :: D :: E :: X是件好事,因为否则可能会造成歧义。如以下示例所示:

writer.setStrictImageSequence(true);

在B名称空间中可以声明一个结构X,然后是B :: X,并且有必要调用另一个A :: B :: C :: D :: E :: X他们无法区分。