32 Atomic operations library [atomics]

32.7 Non-member functions [atomics.nonmembers]

Шаблон функции, не являющейся членом, имя которой совпадает с шаблоном atomic_­f или шаблоном, atomic_­f_­explicit вызывает функцию-член fсо значением первого параметра в качестве выражения объекта и значениями остальных параметров (если есть) в качестве аргументов вызова функции-члена, чтобы. Аргумент для параметра типа atomic<T>​::​value_­type* разыменовывается при передаче в вызов функции-члена. Если такой функции-члена не существует, программа имеет неправильный формат.

template<class T> void atomic_init(volatile atomic<T>* object, typename atomic<T>::value_type desired) noexcept; template<class T> void atomic_init(atomic<T>* object, typename atomic<T>::value_type desired) noexcept;

Effects: Неатомарно инициализируется *object значением desired. Эта функция должна применяться только к объектам, которые были созданы по умолчанию, и только один раз. [ Note: Эта семантика обеспечивает совместимость с C. ] [ Параллельный доступ из другого потока, даже через атомарную операцию, составляет гонку данных. ] end noteNote: end note

[ Note: Функции, не являющиеся членами, позволяют программистам писать код, который может быть скомпилирован как C или C ++, например, в файле общего заголовка. ]end note