The new standard for C++ has changed some behaviour on the way code is processed.

struct X {

struct Y : X {

Y foo() { return {}; }

In C++ 14 this is a typical inheritance. In C++17 this changes to aggregation.

template< class T >struct is_aggregate; // standard prototype

Work to get the code working as desired can be challenging. Consider:

union u { int a; const char* b; };
u f = { .b = "asdf" };         // OK, active member of the union is b
u g = { .a = 1, .b = "asdf" }; // Error, only one initializer may be provided

So fix problems with older code/techniques, Visual Studio C++ compiler has a switch to select the ISO standard to be used.

cl /c /EHsc /W4 /WX /FAc /std:c++14

A lot of expertise is needed to maintain game engines and assets. Care is needed to read the standards manuals closely as there are some minor incompatibilities.

So far MSFT has posted a lot of updates for Visual Studio.