The attribute may be applied to the declaration of a class,
typedef-name,
variable (including a structured binding declaration),
non-static data member,
function,
enumeration, or
enumerator, or
to an identifier label ([stmt.label]).
Recommended practice: For an entity marked maybe_unused,
implementations should not emit a warning
that the entity or its structured bindings (if any)
are used or unused.
For a structured binding declaration not marked maybe_unused,
implementations should not emit such a warning unless
all of its structured bindings are unused.
For a label to which maybe_unused is applied,
implementations should not emit a warning that the label is used or unused.
The value of
a has-attribute-expression for the maybe_unused attribute
should be 0
if the attribute does not cause suppression of such warnings.