Lines Matching refs:atomic
14 atomic synopsis
62 struct atomic
70 atomic() noexcept = default; // until C++20
71 constexpr atomic() noexcept(is_nothrow_default_constructible_v<T>); // since C++20
72 constexpr atomic(T desr) noexcept;
73 atomic(const atomic&) = delete;
74 atomic& operator=(const atomic&) = delete;
75 atomic& operator=(const atomic&) volatile = delete;
113 struct atomic<integral>
122 atomic() noexcept = default;
123 constexpr atomic(integral desr) noexcept;
124 atomic(const atomic&) = delete;
125 atomic& operator=(const atomic&) = delete;
126 atomic& operator=(const atomic&) volatile = delete;
196 struct atomic<T*>
205 atomic() noexcept = default; // until C++20
206 constexpr atomic() noexcept; // since C++20
207 constexpr atomic(T* desr) noexcept;
208 atomic(const atomic&) = delete;
209 atomic& operator=(const atomic&) = delete;
210 atomic& operator=(const atomic&) volatile = delete;
266 struct atomic<floating-point-type> { // since C++20
274 constexpr atomic() noexcept;
275 constexpr atomic(floating-point-type) noexcept;
276 atomic(const atomic&) = delete;
277 atomic& operator=(const atomic&) = delete;
278 atomic& operator=(const atomic&) volatile = delete;
334 bool atomic_is_lock_free(const volatile atomic<T>*) noexcept;
336 bool atomic_is_lock_free(const atomic<T>*) noexcept;
338 void atomic_store(volatile atomic<T>*, atomic<T>::value_type) noexcept;
340 void atomic_store(atomic<T>*, atomic<T>::value_type) noexcept;
342 void atomic_store_explicit(volatile atomic<T>*, atomic<T>::value_type,
345 void atomic_store_explicit(atomic<T>*, atomic<T>::value_type,
348 T atomic_load(const volatile atomic<T>*) noexcept;
350 T atomic_load(const atomic<T>*) noexcept;
352 T atomic_load_explicit(const volatile atomic<T>*, memory_order) noexcept;
354 T atomic_load_explicit(const atomic<T>*, memory_order) noexcept;
356 T atomic_exchange(volatile atomic<T>*, atomic<T>::value_type) noexcept;
358 T atomic_exchange(atomic<T>*, atomic<T>::value_type) noexcept;
360 T atomic_exchange_explicit(volatile atomic<T>*, atomic<T>::value_type,
363 T atomic_exchange_explicit(atomic<T>*, atomic<T>::value_type,
366 bool atomic_compare_exchange_weak(volatile atomic<T>*, atomic<T>::value_type*,
367 atomic<T>::value_type) noexcept;
369 bool atomic_compare_exchange_weak(atomic<T>*, atomic<T>::value_type*,
370 atomic<T>::value_type) noexcept;
372 bool atomic_compare_exchange_strong(volatile atomic<T>*, atomic<T>::value_type*,
373 atomic<T>::value_type) noexcept;
375 bool atomic_compare_exchange_strong(atomic<T>*, atomic<T>::value_type*,
376 atomic<T>::value_type) noexcept;
378 bool atomic_compare_exchange_weak_explicit(volatile atomic<T>*, atomic<T>::value_type*,
379 atomic<T>::value_type,
382 bool atomic_compare_exchange_weak_explicit(atomic<T>*, atomic<T>::value_type*,
383 atomic<T>::value_type,
386 bool atomic_compare_exchange_strong_explicit(volatile atomic<T>*, atomic<T>::value_type*,
387 atomic<T>::value_type,
390 bool atomic_compare_exchange_strong_explicit(atomic<T>*, atomic<T>::value_type*,
391 atomic<T>::value_type,
395 T atomic_fetch_add(volatile atomic<T>*, atomic<T>::difference_type) noexcept;
397 T atomic_fetch_add(atomic<T>*, atomic<T>::difference_type) noexcept;
399 T atomic_fetch_add_explicit(volatile atomic<T>*, atomic<T>::difference_type,
402 T atomic_fetch_add_explicit(atomic<T>*, atomic<T>::difference_type,
405 T atomic_fetch_sub(volatile atomic<T>*, atomic<T>::difference_type) noexcept;
407 T atomic_fetch_sub(atomic<T>*, atomic<T>::difference_type) noexcept;
409 T atomic_fetch_sub_explicit(volatile atomic<T>*, atomic<T>::difference_type,
412 T atomic_fetch_sub_explicit(atomic<T>*, atomic<T>::difference_type,
415 T atomic_fetch_and(volatile atomic<T>*, atomic<T>::value_type) noexcept;
417 T atomic_fetch_and(atomic<T>*, atomic<T>::value_type) noexcept;
419 T atomic_fetch_and_explicit(volatile atomic<T>*, atomic<T>::value_type,
422 T atomic_fetch_and_explicit(atomic<T>*, atomic<T>::value_type,
425 T atomic_fetch_or(volatile atomic<T>*, atomic<T>::value_type) noexcept;
427 T atomic_fetch_or(atomic<T>*, atomic<T>::value_type) noexcept;
429 T atomic_fetch_or_explicit(volatile atomic<T>*, atomic<T>::value_type,
432 T atomic_fetch_or_explicit(atomic<T>*, atomic<T>::value_type,
435 T atomic_fetch_xor(volatile atomic<T>*, atomic<T>::value_type) noexcept;
437 T atomic_fetch_xor(atomic<T>*, atomic<T>::value_type) noexcept;
439 T atomic_fetch_xor_explicit(volatile atomic<T>*, atomic<T>::value_type,
442 T atomic_fetch_xor_explicit(atomic<T>*, atomic<T>::value_type,
446 void atomic_wait(const volatile atomic<T>*, atomic<T>::value_type) noexcept;
448 void atomic_wait(const atomic<T>*, atomic<T>::value_type) noexcept;
450 void atomic_wait_explicit(const volatile atomic<T>*, atomic<T>::value_type,
453 void atomic_wait_explicit(const atomic<T>*, atomic<T>::value_type,
456 void atomic_notify_one(volatile atomic<T>*) noexcept;
458 void atomic_notify_one(atomic<T>*) noexcept;
460 void atomic_notify_all(volatile atomic<T>*) noexcept;
462 void atomic_notify_all(atomic<T>*) noexcept;
466 typedef atomic<bool> atomic_bool;
467 typedef atomic<char> atomic_char;
468 typedef atomic<signed char> atomic_schar;
469 typedef atomic<unsigned char> atomic_uchar;
470 typedef atomic<short> atomic_short;
471 typedef atomic<unsigned short> atomic_ushort;
472 typedef atomic<int> atomic_int;
473 typedef atomic<unsigned int> atomic_uint;
474 typedef atomic<long> atomic_long;
475 typedef atomic<unsigned long> atomic_ulong;
476 typedef atomic<long long> atomic_llong;
477 typedef atomic<unsigned long long> atomic_ullong;
478 typedef atomic<char8_t> atomic_char8_t; // C++20
479 typedef atomic<char16_t> atomic_char16_t;
480 typedef atomic<char32_t> atomic_char32_t;
481 typedef atomic<wchar_t> atomic_wchar_t;
483 typedef atomic<int_least8_t> atomic_int_least8_t;
484 typedef atomic<uint_least8_t> atomic_uint_least8_t;
485 typedef atomic<int_least16_t> atomic_int_least16_t;
486 typedef atomic<uint_least16_t> atomic_uint_least16_t;
487 typedef atomic<int_least32_t> atomic_int_least32_t;
488 typedef atomic<uint_least32_t> atomic_uint_least32_t;
489 typedef atomic<int_least64_t> atomic_int_least64_t;
490 typedef atomic<uint_least64_t> atomic_uint_least64_t;
492 typedef atomic<int_fast8_t> atomic_int_fast8_t;
493 typedef atomic<uint_fast8_t> atomic_uint_fast8_t;
494 typedef atomic<int_fast16_t> atomic_int_fast16_t;
495 typedef atomic<uint_fast16_t> atomic_uint_fast16_t;
496 typedef atomic<int_fast32_t> atomic_int_fast32_t;
497 typedef atomic<uint_fast32_t> atomic_uint_fast32_t;
498 typedef atomic<int_fast64_t> atomic_int_fast64_t;
499 typedef atomic<uint_fast64_t> atomic_uint_fast64_t;
501 typedef atomic<int8_t> atomic_int8_t;
502 typedef atomic<uint8_t> atomic_uint8_t;
503 typedef atomic<int16_t> atomic_int16_t;
504 typedef atomic<uint16_t> atomic_uint16_t;
505 typedef atomic<int32_t> atomic_int32_t;
506 typedef atomic<uint32_t> atomic_uint32_t;
507 typedef atomic<int64_t> atomic_int64_t;
508 typedef atomic<uint64_t> atomic_uint64_t;
510 typedef atomic<intptr_t> atomic_intptr_t;
511 typedef atomic<uintptr_t> atomic_uintptr_t;
512 typedef atomic<size_t> atomic_size_t;
513 typedef atomic<ptrdiff_t> atomic_ptrdiff_t;
514 typedef atomic<intmax_t> atomic_intmax_t;
515 typedef atomic<uintmax_t> atomic_uintmax_t;
577 void atomic_init(volatile atomic<T>* obj, atomic<T>::value_type desr) noexcept;
580 void atomic_init(atomic<T>* obj, atomic<T>::value_type desr) noexcept;
593 # error <atomic> is incompatible with <stdatomic.h> before C++23. Please compile with -std=c++23.
597 #include <__atomic/atomic.h>
621 # error <atomic> is not implemented