atributo de C++: deprecated (desde C++14)
De cppreference.com
< cpp | language | attributes
Inidica que el nombre o entidad declarado(a) con este atributo se encuentra en desuso u obsoleto. Es decir, se permite su uso, pero se desalienta por alguna razón.
Contenido |
[editar]Sintaxis
[[deprecated ]] | (1) | ||||||||
[[deprecated( literal-de-cadena)]] | (2) | ||||||||
literal-de-cadena | - | Texto que podría ser usado para explicar el razonamiento para la obsolescencia o sugerir una entidad que la reemplace. |
[editar]Explicación
Indica que el uso del nombre o entidad declarado(a) con este atributo se permite, pero no se aconseja por alguna razón. Los compiladores típicamente generan advertencias en tales usos. El literal-de-cadena, si se especifica, habitualmente se incluye en las advertencias.
Se permite este atributo en las declaraciones de los siguientes nombres o entidades:
- class/struct/union: struct[[deprecated]] S;,
- nombre-typedef, incluyendo aquellos declarados por una declaración de alias: [[deprecated]]typedef S* PS;, using PS [[deprecated]]= S*;,
- variable, incluyendo datos miembro estáticos: [[deprecated]]int x;,
- datos miembro no-estáticos: union U {[[deprecated]]int n;};,
- función: [[deprecated]]void f();,
- espacio de nombres: namespace[[deprecated]] NS {int x;}
- enumeración: enum[[deprecated]] E {};,
- enumerador: enum{ A [[deprecated]], B [[deprecated]]=42};.
- especialización de plantilla: template<>struct[[deprecated]] X<int>{};
Un nombre declarado como no obsoleto puede ser redeclarado como obsoleto o en desuso. Un nombre declarado como obsoleto o en desuso no puede revertirse como no obsoleto volviéndolo a declarar sin este atributo.
[editar]Ejemplo
Ejecuta este código
#include <iostream> [[deprecated]]void PeriodoTriasico(){std::clog<<"Periodo Triásico: hace [251.9 - 208.5] millones de años.\n";} [[deprecated("Use es su lugar PeriodoNeogeno().")]]void PeriodoJurasico(){std::clog<<"Periodo Jurásico: hace [201.3 - 152.1] millones de años.\n";} [[deprecated("Use calcularAlgoDiferente(int).")]]int calcularAlgo(int x){return x *2;} int main(){ PeriodoTriasico(); PeriodoJurasico());}
Posible salida:
Periodo Triásico: hace [251.9 - 208.5] millones de años. Periodo Jurásico: hace [201.3 - 152.1] millones de años. main.cpp:20:5: warning: 'PeriodoTriasico' is deprecated [-Wdeprecated-declarations] PeriodoTriasico(); ^ main.cpp:3:3: note: 'PeriodoJurasico' has been explicitly marked deprecated here [[deprecated]] ^ main.cpp:21:5: warning: 'PeriodoJurasico' is deprecated: Use es su lugar PeriodoNeogeno() [-Wdeprecated-declarations] PeriodoJurasico(); ^ main.cpp:8:3: note: 'PeriodoJurasico' has been explicitly marked deprecated here [[deprecated("Use es su lugar PeriodoNeogeno()")]] ^ 2 warnings generated.
[editar]Véase también
Documentación de C para deprecated |