atributo de C++: deprecated (desde C++14)
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.
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. |
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.
Ejemplo
#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.
Véase también
Documentación de C para deprecated
|