2016-07-14 14 views
5

VS2015u2では、次のコードは正常にコンパイルされました。 VS2015u3の下Visual Studio 2015 Update 3ブレークコンストラクタの属性はありましたか?

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

、私はエラーを取得しています:

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にバグレポートを提出し、我々はそれをupvoteことができるようにリンクしてここに戻って投稿してください。 : - ]

+1

確認と詳細をお寄せいただきありがとうございます。バグ報告はこちら:https://connect.microsoft.com/VisualStudio/feedback/details/2931827 –

関連する問題