20 std::atomic<T> &m_atomic;
22 std::memory_order m_mo;
26 static constexpr std::memory_order store_part(std::memory_order
mo)
noexcept
29 case std::memory_order_relaxed:
30 case std::memory_order_consume:
31 case std::memory_order_acquire:
return std::memory_order_relaxed;
32 case std::memory_order_release:
33 case std::memory_order_acq_rel:
return std::memory_order_release;
34 case std::memory_order_seq_cst:
return std::memory_order_seq_cst;
37#if !defined(Q_CC_GNU_ONLY) || (Q_CC_GNU >= 900)
41 return std::memory_order_seq_cst;
44 static constexpr std::memory_order load_part(std::memory_order
mo)
noexcept
47 case std::memory_order_relaxed:
48 case std::memory_order_release:
return std::memory_order_relaxed;
49 case std::memory_order_consume:
return std::memory_order_consume;
50 case std::memory_order_acquire:
51 case std::memory_order_acq_rel:
return std::memory_order_acquire;
52 case std::memory_order_seq_cst:
return std::memory_order_seq_cst;
55#if !defined(Q_CC_GNU_ONLY) || (Q_CC_GNU >= 900)
59 return std::memory_order_seq_cst;
68 std::memory_order
mo = std::memory_order_seq_cst)
74 std::memory_order
mo = std::memory_order_seq_cst)
83 std::memory_order
mo = std::memory_order_seq_cst)
89 std::memory_order
mo = std::memory_order_seq_cst)
98 std::memory_order
mo = std::memory_order_seq_cst)
104 std::memory_order
mo = std::memory_order_seq_cst)
109 m_atomic.store(m_value, store_part(m_mo));
114 m_value = m_atomic.load(load_part(m_mo));