ATOMIC_FLAG_INIT
Определён в заголовке <atomic> | ||
|---|---|---|
#define ATOMIC_FLAG_INIT /* implementation-defined */ | (начиная с C++11) |
Определяет инициализатор, который можно использовать для инициализации std::atomic_flag в сброшенное (false) состояние в форме 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 2159 | C++11 | не было ясно, можно ли использовать ATOMIC_FLAG_INITв других контекстах инициализации | другие способы использования не гарантируются |
| 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/cpp/atomic/ATOMIC_FLAG_INIT