C++11標準ライブラリのatomic変数std::atomic<T>
について、型T
からatomic<T>
への代入はstore操作に等しく、atomic<T>
から型T
への暗黙型変換はload操作に等しい*1。
#include <atomic> std::atomic<int> a; int x; a = 5; // a.store(5, std::memory_order_seq_cst); x = a; // x = a.laod(std::memory_order_seq_cst);
N3337 29.6.5/p11-12, p16-17より引用(表記を調整)。
T atomic<T>::operator=(T desired) noexcept;
11 Effects:store(desired)
12 Returns:desired
atomic<T>::operator T() const noexcept;
16 Effects:load()
17 Returns: The result ofload()
.
*1:より正確には memory_order_seq_cst を指定した store/load 操作