N2748 - Strong Compare and Exchange
compare-and-exchange は、実装によっては以前の値と同じ場合でも失敗することがあるのだけれども、それが起こる weak バージョン(今まで用意されていたもの)と、起こらない strong バージョン(今回追加されたもの)の2つを提供するよ、というもの。
weak ならループで書く必要があるけど strong バージョンならループを書く必要が無くて、strong バージョンがプリミティブに用意されているケースならこっちの方が効率が良くなるみたいです。
確実に以前の値と異なっているなら値の更新を諦めても構わないというケースでは strong バージョンを使うといいってことかな?