标准是否允许以下内容?
#include <iostream>
extern int a;
auto a = 3;
int main(int, char**)
{
std::cout << a << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看看这个片段:
int a;
extern int b;
auto b = a;
Run Code Online (Sandbox Code Playgroud)
它结构良好吗?Clang成功编译了它,但是GCC和MSVC没有.
(当我回答如何声明和定义具有推导类型的静态成员时出现了这个问题?)
请考虑以下代码:
#include <vector>
extern std::vector<int> const my_vector;
auto const my_vector = std::vector<int>{};
Run Code Online (Sandbox Code Playgroud)
它无法在gcc上编译,但它自6.0.0起就适用于clang:
[x86-64 gcc 8.1 #1] error: conflicting declaration 'const auto my_vector'
Run Code Online (Sandbox Code Playgroud)
这是gcc错误还是违反了规范?