如何强制visual studio遵循ISO c++

How to force visual studio follow ISO C++

本文关键字:ISO c++ 遵循 studio 何强制 visual      更新时间:2023-10-16

我很高兴在Visual Studio 2013中编写c++项目。我没有显式地使用任何非标准扩展,尽管当我在Ubuntu中迁移到GCC 4.8时,我收到了许多错误,因为我隐式地使用了非标准扩展。例如:

#include <vector>
template<class T>
class A
{
    public:
    using MyVector = std::vector<T>;
};
template<class T>
class B : public A<T>
{
    MyVector vec;
};

此代码(这里是链接)在VS2013的默认设置下是合法的,尽管在GCC: error: 'MyVector' has not been defined中,并且它与ISO一致。

所以我的问题是:如果我100%确定,我的代码应该符合ISO标准,我可以强制visual studio严格遵循ISO c++标准吗?

微软最近似乎在这方面做了一些工作:

https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/

你可以试试,也许它至少能部分解决问题。