| General topics | ||||||||||||||||
| Flow control | ||||||||||||||||
| Conditional execution statements | ||||||||||||||||
| Iteration statements (loops) | ||||||||||||||||
| Jump statements | ||||||||||||||||
| Functions | ||||||||||||||||
| Function declaration | ||||||||||||||||
| Lambda function expression | ||||||||||||||||
inline specifier | ||||||||||||||||
| Dynamic exception specifications(until C++17*) | ||||||||||||||||
noexcept specifier(C++11) | ||||||||||||||||
| Exceptions | ||||||||||||||||
| Namespaces | ||||||||||||||||
| Types | ||||||||||||||||
| Specifiers | ||||||||||||||||
| ||||||||||||||||
| Storage duration specifiers | ||||||||||||||||
| Initialization | ||||||||||||||||
| Expressions | ||||||||||||||||
| Alternative representations | ||||||||||||||||
| Literals | ||||||||||||||||
| Boolean -Integer -Floating-point | ||||||||||||||||
| Character -String -nullptr(C++11) | ||||||||||||||||
| User-defined(C++11) | ||||||||||||||||
| Utilities | ||||||||||||||||
| Attributes(C++11) | ||||||||||||||||
| Types | ||||||||||||||||
typedef declaration | ||||||||||||||||
| Type alias declaration(C++11) | ||||||||||||||||
| Casts | ||||||||||||||||
| Memory allocation | ||||||||||||||||
| Classes | ||||||||||||||||
| Class-specific function properties | ||||||||||||||||
| ||||||||||||||||
| Special member functions | ||||||||||||||||
| Templates | ||||||||||||||||
| Miscellaneous | ||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++23) | ||||
(C++11)(until C++26) | ||||
(C++14) | ||||
(C++17) | ||||
(C++26) | ||||
(C++20) | ||||
maybe_unused (C++17) | ||||
(C++17) | ||||
(C++11) | ||||
(C++20) | ||||
(TM TS) | ||||
(C++20) |
Suppresses warnings on unused entities.
Contents |
[[maybe_unused]] | |||||||||
This attribute can appear in the declaration of the following entities:
| (since C++26) |
For entities declared[[maybe_unused]], if the entities or their structured bindings are unused, the warning on unused entities issued by the compiler is suppressed.
For labels declared[[maybe_unused]], if they are unused, the warning on unused labels issued by the compiler is suppressed. | (since C++26) |
#include <cassert> [[maybe_unused]]void f([[maybe_unused]]bool thing1,[[maybe_unused]]bool thing2){[[maybe_unused]] lbl:// the label “lbl” is not used, no warning[[maybe_unused]]bool b= notfalse and nottrue;assert(b);// in release mode, assert is compiled out, and “b” is unused// no warning because it is declared [[maybe_unused]]}// parameters “thing1” and “thing2” are not used, no warning int main(){}
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| CWG 2360 | C++17 | could not apply[[maybe_unused]] to structured bindings | allowed |
C documentation formaybe_unused |