この回答では、bdonlan は次のようなコードを示しています。
int t;
volatile int a, b;
t = x;
a = t;
b = t;
コンパイラによって次のように変換される場合があります。
a = x;
b = x;
x
私の質問は、次のように、負荷が緩和されたアトミック変数である場合、これはまだ許可されていますか?
atomic<int> x;
int t;
volatile int a, b;
t = x.load(std::memory_order_relaxed);
a = t;
b = t;
assert(a == b); // Will this hold?
タイトルが示すように、C++11 コンパイラはアトミック変数の追加ロードを導入できますか? 追加店舗は?