24 using guard_ptr = GuardPtr<T, marked_ptr>;
33 marked_ptr load(std::memory_order order = std::memory_order_seq_cst)
const
35 return ptr.load(order);
39 void store(
const marked_ptr& src, std::memory_order order = std::memory_order_seq_cst)
41 ptr.store(src, order);
45 void store(
const guard_ptr& src, std::memory_order order = std::memory_order_seq_cst)
47 ptr.store(src.
get(), order);
50 bool compare_exchange_weak(
marked_ptr& expected,
marked_ptr desired, std::memory_order order = std::memory_order_seq_cst)
52 return ptr.compare_exchange_weak(expected, desired, order);
55 bool compare_exchange_weak(
marked_ptr& expected,
marked_ptr desired, std::memory_order order = std::memory_order_seq_cst)
volatile
57 return ptr.compare_exchange_weak(expected, desired, order);
60 bool compare_exchange_weak(
marked_ptr& expected,
marked_ptr desired, std::memory_order success, std::memory_order failure)
62 return ptr.compare_exchange_weak(expected, desired, success, failure);
65 bool compare_exchange_weak(
marked_ptr& expected,
marked_ptr desired, std::memory_order success, std::memory_order failure)
volatile
67 return ptr.compare_exchange_weak(expected, desired, success, failure);
70 bool compare_exchange_strong(
marked_ptr& expected,
marked_ptr desired, std::memory_order order = std::memory_order_seq_cst)
72 return ptr.compare_exchange_strong(expected, desired, order);
75 bool compare_exchange_strong(
marked_ptr& expected,
marked_ptr desired, std::memory_order order = std::memory_order_seq_cst)
volatile
77 return ptr.compare_exchange_strong(expected, desired, order);
80 bool compare_exchange_strong(
marked_ptr& expected,
marked_ptr desired, std::memory_order success, std::memory_order failure)
82 return ptr.compare_exchange_strong(expected, desired, success, failure);
85 bool compare_exchange_strong(
marked_ptr& expected,
marked_ptr desired, std::memory_order success, std::memory_order failure)
volatile
87 return ptr.compare_exchange_strong(expected, desired, success, failure);
91 std::atomic<marked_ptr> ptr;