atributo de C++: maybe_unused (desde C++17)
De cppreference.com
Suprime advertencias sobre entidades no usadas.
Sintaxix
[[maybe_unused]]
|
|||||||||
Explicación
Este atributo puede aparecer en la declaración de las siguientes entidades:
- class/struct/union:
struct [[maybe_unused]] S;; - typedef, incluyendo aquellos declarados por una declaración de alias:
[[maybe_unused]] typedef S* PS;;using PS [[maybe_unused]] = S*;, - variable, incluyendo un dato miembro estático:
[[maybe_unused]] int x;; - dato miembro no estático:
union U { [[maybe_unused]] int n; };; - función:
[[maybe_unused]] void f();; - enumeración:
enum [[maybe_unused]] E {};; - enumerador:
enum { A [[maybe_unused]], B [[maybe_unused]] = 42 };.
Si el compilador emite advertencias sobre entidades no usadas, esas advertencias se suprimen para cualquier entidad declarada como maybe_unused.
Ejemplo
Ejecuta este código
[[maybe_unused]] void f([[maybe_unused]] bool cosa1,
[[maybe_unused]] bool cosa2)
{
[[maybe_unused]] bool b = cosa1 && cosa2;
assert(b); // en versión de lanzamiento, la aserción se compila y elimina, y b no se usa
// no hay advertencia porque se declara como [[maybe_unused]]
} // los parámetros cosa1 y cosa2 no se usan, no hay advertencia