ATOMIC_FLAG_INIT
Определено в заголовке <atomic> |
||
|---|---|---|
#define ATOMIC_FLAG_INIT /* implementation-defined */ |
(с C++11) |
Определяет инициализатор, который можно использовать для инициализации std::atomic_flag в очищенном (ложном) состоянии с помощью оператора std::atomic_flag v = ATOMIC_FLAG_INIT;. Не определено, можно ли его использовать в других контекстах инициализации.
Если флаг имеет статическую продолжительность хранения, эта инициализация является статической.
| Это единственный способ инициализации |
(до C++20) |
| Эта макрокоманда больше не нужна, так как конструктор по умолчанию для |
(с C++20) |
Пример
#include <atomic>
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // static initialization,
// guaranteed to be available during dynamic initialization of static objects.
int main()
{
std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // guaranteed to work
// std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // unspecified
}Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 3659 | C++20 |
ATOMIC_FLAG_INIT была устаревшей, но необходимой в C на некоторых платформах |
она не устаревшая |
См. также
|
(C++11) |
атомарный булевый тип без блокировки (класс) |
Документация C для ATOMIC_FLAG_INIT |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/atomic/ATOMIC_FLAG_INIT