相关疑难解决方法(0)

113
推荐指数
5
解决办法
7万
查看次数

与类型同名的变量 - 哪个编译器是对的?

在这段代码中:

typedef int foo;

struct S
{
  foo foo;
};

int main() {}
Run Code Online (Sandbox Code Playgroud)

所有版本的clang -std=c++14接受此代码,但所有版本的g++ -std=c++14报告:

5 : error: declaration of 'foo S::foo' [-fpermissive]
foo foo;
^
1 : error: changes meaning of 'foo' from 'typedef int foo' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

代码是否正确?

c++ compiler-errors clang variable-names language-lawyer

13
推荐指数
1
解决办法
1668
查看次数