Espacios de nombres
Variantes
Acciones

atributo de C++: deprecated (desde C++14)

De cppreference.com
< cpp‎ | language‎ | attributes
 
 
 
 
Atributos
(C++23)
deprecated
(C++14)
(C++20)
(C++17)
(C++11)
(C++20)
 

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:

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

#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