2016-07-31 74 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)。