C++ attribute: maybe_unused (since C++17)
Suprime las advertencias sobre entidades no utilizadas.
Contenidos |
Sintaxis
[
[
maybe_unused
]
]
|
|||||||||
Explicación
Este atributo puede aparecer en la declaración de las siguientes entidades:
- clase : struct [ [ maybe_unused ] ] S ;
- typedef , incluyendo aquellos declarados por declaración de alias : [ [ maybe_unused ] ] typedef S * PS ; , using PS [ [ maybe_unused ] ] = S * ;
- variable, incluyendo miembro de datos estático : [ [ maybe_unused ] ] int x ;
- miembro de datos 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 } ;
- enlace estructurado : [ [ maybe_unused ] ] auto [ a, b ] = std:: make_pair ( 42 , 0.23 ) ;
|
(desde C++26) |
Para las entidades declaradas [ [ maybe_unused ] ] , si las entidades o sus enlaces estructurados no se utilizan, se suprime la advertencia sobre entidades no utilizadas emitida por el compilador.
|
Para etiquetas declaradas [ [ maybe_unused ] ] , si no se utilizan, se suprime la advertencia sobre etiquetas no utilizadas emitida por el compilador. |
(since C++26) |
Ejemplo
#include <cassert> [[maybe_unused]] void f([[maybe_unused]] bool thing1, [[maybe_unused]] bool thing2) { [[maybe_unused]] lbl: // la etiqueta "lbl" no se usa, sin advertencia [[maybe_unused]] bool b = not false and not true; assert(b); // en modo release, assert se elimina en compilación, y "b" no se usa // sin advertencia porque se declaró [[maybe_unused]] } // los parámetros "thing1" y "thing2" no se usan, sin advertencia int main() {}
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| CWG 2360 | C++17 | no se podía aplicar [ [ maybe_unused ] ] a enlaces estructurados | permitido |
Referencias
- Estándar C++23 (ISO/IEC 14882:2024):
-
- 9.12.8 Atributo Maybe unused [dcl.attr.unused]
- Estándar C++20 (ISO/IEC 14882:2020):
-
- 9.12.7 Atributo Maybe unused [dcl.attr.unused]
- Estándar C++17 (ISO/IEC 14882:2017):
-
- 10.6.6 Atributo Maybe unused [dcl.attr.unused]
Véase también
|
Documentación de C
para
maybe_unused
|