2016-07-14 17 views
5

Trong VS2015u2, mã sau được biên dịch tốt.Visual Studio 2015 đã cập nhật 3 thuộc tính Break Constructor chưa?

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

Dưới VS2015u3, tôi nhận được một lỗi:

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

này hoạt động trong GCC 5.2 và nó làm việc trong các phiên bản trước đó của VS2015. Cấp, các thuộc tính không được chấp nhận đã không thực sự kích hoạt một cảnh báo trong VS2015, nhưng đó không phải là một mối quan tâm đáng kể.

Tôi có hiểu lầm về cách áp dụng các thuộc tính cho các nhà xây dựng không? Hoặc là VS2015u3 bị hỏng trong lĩnh vực này?

Trả lời

4

Để đặt nhanh: Có.

Đây là lỗi trong đó deprecated được phép áp dụng cho định nghĩa, nhưng không được phép khai báo, của hàm tạo (các hàm thành viên khác có vẻ tốt). Ví dụ. sau biên dịch sạch, và không giống như với Cập nhật 2, cư xử một cách chính xác (năng suất một C4996 diagnostic):

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

Vui lòng gửi báo cáo lỗi để MS Connect và gửi trở lại đây với một liên kết để chúng tôi có thể upvote nó. : -]

+1

Cảm ơn bạn đã xác nhận và thêm chi tiết. Báo cáo lỗi tại đây: https://connect.microsoft.com/VisualStudio/feedback/details/2931827 –

Các vấn đề liên quan