C++11 29.3-p3 から:
アトミック オブジェクト M から値をロードする各 memory_order_seq_cst 操作 B が次のいずれかを観察するように、すべての memory_order_seq_cst 操作に単一の合計順序 S が存在し、影響を受けるすべての場所の「前に発生する」順序および変更順序と一致するものとします。値:
-- S で B に先行する M の最後の変更 A の結果 (存在する場合)、または
-- A が存在する場合、B に関する副作用の目に見えるシーケンスでの M の何らかの変更の結果であり、これは memory_order_seq_cst ではなく、A の前には発生しません。または
-- A が存在しない場合、memory_order_seq_cst ではない B に関する副作用の目に見えるシーケンスで M を何らかの変更した結果。
[ 注: S にロックを含めることは明示的に要求されていませんが、ロック操作とロック解除操作を含む順序に常に拡張できます。これは、それらの間の順序付けが「前に発生する」順序付けに既に含まれているためです。--終わりのメモ]
最後のメモで、「常に」とはどういう意味ですか? そのような拡張された S をサポートするように特定の実装を設計できることは理解できます。しかし、そのために設計されていない一般的な実装では、記述されたプロパティで S を拡張できるとは思えません。
ここでも同じ可視性プロパティを満たす拡張オーダーを意味しますか?
この質問を comp.std.c++ に送信しましたが、回答がありませんでした。http://groups.google.com/group/comp.std.c++/browse_frm/thread/5242fa70d0594d1b#