2016-07-14 52 views
5

在VS2015u2下面的代碼編譯得很好。Visual Studio 2015 Update 3中斷了構造函數屬性嗎?

class Foo { 
public: 
    [[deprecated]] Foo(std::string); 
    Foo(); 
}; 

在VS2015u3,我得到一個錯誤:

C2416: attribute 'deprecated' cannot be applied in this context 

這個工作在GCC 5.2,它在早期版本的VS2015的工作。當然,過時的屬性並沒有在VS2015中實際觸發警告,但這並不是一個重要的問題。

我誤解了如何將屬性應用於構造函數?或者是VS2015u3在這方面打破了?

回答

4

簡而言之:是的。

這是一個錯誤,其中允許deprecated應用於構造函數的定義(而不是聲明)(其他成員函數看起來很好)。例如。以下完全編譯,並且不像更新2,正確的行爲(得到C4996 diagnostic):

class Foo { 
public: 
    [[deprecated]] Foo(std::string) { } 
    Foo() { } 
}; 

請提交錯誤報告MS Connect和一個鏈接後回到這裏,以便我們可以給予好評的。 : - ]

+1

感謝您的確認並增加了詳細信息。錯誤報告在這裏:https://connect.microsoft.com/VisualStudio/feedback/details/2931827 –