注入类名编译器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

考虑以下代码:

struct foo{};

int main() {
    foo::foo a;
}

gcc 5.2.0提供下列错误消息:

main.cpp: In function 'int main()':
main.cpp:5:5: error: 'foo::foo' names the constructor, not the type
   foo::foo a;
提问于
用户回答回答于

该标准有一个几乎相等的例子:

struct A { A(); };
struct B: public A { B(); };

A::A() { }
B::B() { }

B::A ba;// object of type A
A::A a;// error, A::A is not a type name
struct A::A a2;// object of type A

然而,clang实际上是这样的:

error: qualified reference to 'A' is a constructor name rather than a type wherever a constructor can be declared

用户回答回答于

可能想要使用Clang的,-Weverything而不是-Wall -pedantic

扫码关注云+社区