C++ 为c+;的msvc编译器检测未定义的变量+;14

C++ 为c+;的msvc编译器检测未定义的变量+;14,c++,visual-c++,c++14,undefined-reference,C++,Visual C++,C++14,Undefined Reference,考虑以下C++14(这很重要)代码: 使用gcc编译会导致“未定义引用”,因为B::a未定义(仅声明)。要解决此问题,我们只需在结构外部定义B::a: constexpr int B::a; 但是我有一个msvc编译器的问题。即使没有B::a的定义,第一段代码摘录也编译得很好(没有“未定义引用”问题) 有没有一种方法(我认为是一个编译器选项)可以说msvc可以检测针对C++14标准编译的此类问题,即当使用/std:C++14选项时 这是我测试过的godbolt的链接:msvc错了吗?我认为ms

考虑以下C++14(这很重要)代码:

使用gcc编译会导致“未定义引用”,因为
B::a
未定义(仅声明)。要解决此问题,我们只需在结构外部定义
B::a

constexpr int B::a;
但是我有一个msvc编译器的问题。即使没有
B::a的定义,第一段代码摘录也编译得很好(没有“未定义引用”问题)

有没有一种方法(我认为是一个编译器选项)可以说msvc可以检测针对C++14标准编译的此类问题,即当使用
/std:C++14
选项时


这是我测试过的godbolt的链接:

msvc错了吗?我认为msvc行为现在被认为是有效的。@Janosimas-在C++17中。这个问题是关于C++14代码库的。@Janosimas msvc是错误的。请检查。msvc有错吗?我认为msvc行为现在被认为是有效的。@Janosimas-在C++17中。这个问题是关于C++14代码库的。@Janosimas msvc是错误的。请查收。
constexpr int B::a;