2016-07-14 43 views
5

In VS2015u2 il seguente codice è stato compilato correttamente.Visual Studio 2015 Update 3 ha interrotto gli attributi del costruttore?

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

Sotto VS2015u3, sto ottenendo un errore:

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

Questo funziona in GCC 5.2 e ha funzionato nelle versioni precedenti di VS2015. Certo, l'attributo deprecato non ha effettivamente attivato un avviso in VS2015, ma ciò non rappresentava un problema significativo.

Sto fraintendendo come applicare gli attributi ai costruttori? O è rotto VS2015u3 in questo senso?

risposta

4

Per dirla in breve: Sì.

Questo è un bug in cui è possibile applicare deprecated alla definizione, ma non alla dichiarazione, di un costruttore (le altre funzioni membro sembrano corrette). Per esempio. il seguente compila in modo pulito, e, a differenza con Update 2, si comporta in modo corretto (ottenendo un C4996 diagnostic):

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

Si prega di presentare un bug report per MS Connect e POST di nuovo qui con un link in modo che possiamo upvote esso. : -]

+1

Grazie per la conferma e i dettagli aggiunti. Segnalazione di bug qui: https://connect.microsoft.com/VisualStudio/feedback/details/2931827 –

Problemi correlati