请考虑以下代码。
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声明的位置而不是别名实体?
答案 0 :(得分:0)
我认为编译器使用A :: B :: C :: D :: E :: X是件好事,因为否则可能会造成歧义。如以下示例所示:
writer.setStrictImageSequence(true);
在B名称空间中可以声明一个结构X,然后是B :: X,并且有必要调用另一个A :: B :: C :: D :: E :: X他们无法区分。