2016-07-31 92 views
3

我在问这个问题,因为我无法相信它是2016年,MSVC编译器仍然不支持noexcept关键字。下面简单的代码:2016年MSVC不支持关键字

class Test 
{ 
public: 
    Test() noexcept 
    { 
    } 
}; 

生成此错误:

error C3646: 'noexcept' : unknown override specifier 

此代码编译由Visual Studio Win32平台上,但它会产生这个错误,当我试图编译它UWP。我是否错过了一些显而易见的东西,或者他们对Win32和UWP使用不同的C++编译器?

我正在使用Microsoft Visual Studio Community 2015 Update 3.版本14.0.25424.00。

+2

看起来像它一样https://msdn.microsoft.com/en-us/library/dn956976.aspx - 检查编译选项 –

+0

像一些公平的编译器一样,默认情况下它可能不会编译为C++ 2011。 – Peter

+0

@Peter我无法找到任何有用的编译器选项,但它确实感觉所有的c + 11特性都被禁用了。初始化程序列表,constexpr等不能编译,但在编译Win32的相同项目时工作正常。 – Egor

回答

0

该问题是由于使用旧的Windows8.1项目文件造成的。这些项目被配置为使用旧的v12平台工具集(Visual Studio 2013),这解释了为什么C++ 11功能不可用。同时,除了创建新的通用应用程序项目(不是通用Windows8)之外,没有办法切换到使用更新的v14工具集(VS2015)。