C++ attribute: maybe_unused (since C++17)
Подавляет предупреждения о неиспользуемых сущностях.
Содержание |
Синтаксис
[
[
maybe_unused
]
]
|
|||||||||
Объяснение
Этот атрибут может появляться в объявлении следующих сущностей:
- класс : struct [ [ maybe_unused ] ] S ;
- typedef , включая объявленные через объявление псевдонима : [ [ maybe_unused ] ] typedef S * PS ; , using PS [ [ maybe_unused ] ] = S * ;
- переменная, включая статический член данных : [ [ maybe_unused ] ] int x ;
- нестатический член данных : union U { [ [ maybe_unused ] ] int n ; } ; ,
- функция : [ [ maybe_unused ] ] void f ( ) ;
- перечисление : enum [ [ maybe_unused ] ] E { } ;
- перечислитель: enum { A [ [ maybe_unused ] ] , B [ [ maybe_unused ] ] = 42 } ;
- структурированная привязка : [ [ maybe_unused ] ] auto [ a, b ] = std:: make_pair ( 42 , 0.23 ) ;
|
(начиная с C++26) |
Для сущностей, объявленных [ [ maybe_unused ] ] , если сущности или их структурные привязки не используются, предупреждение компилятора о неиспользуемых сущностях подавляется.
|
Для меток, объявленных [ [ maybe_unused ] ] , если они не используются, предупреждение компилятора о неиспользуемых метках подавляется. |
(since C++26) |
Пример
#include <cassert> [[maybe_unused]] void f([[maybe_unused]] bool thing1, [[maybe_unused]] bool thing2) { [[maybe_unused]] lbl: // метка "lbl" не используется, предупреждения нет [[maybe_unused]] bool b = not false and not true; assert(b); // в режиме release, assert компилируется, и "b" не используется // предупреждения нет, так как объявлено [[maybe_unused]] } // параметры "thing1" и "thing2" не используются, предупреждения нет int main() {}
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, являющиеся дефектными, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| CWG 2360 | C++17 | нельзя было применять [ [ maybe_unused ] ] к структурированным привязкам | разрешено |
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
- 9.12.8 Атрибут Maybe unused [dcl.attr.unused]
- Стандарт C++20 (ISO/IEC 14882:2020):
-
- 9.12.7 Атрибут Maybe unused [dcl.attr.unused]
- Стандарт C++17 (ISO/IEC 14882:2017):
-
- 10.6.6 Атрибут Maybe unused [dcl.attr.unused]
Смотрите также
|
Документация C
для
maybe_unused
|