Take a seq_cst fence for example. The main explanations I've seen are:
1. It gives you the synchronizes-with relationships of acquire and release (if you include the appropriate loads and stores) and also all the fences happen in the same order for all threads (which doesn't seem very useful).
2. also this. It prevents all memory reads or writes on the current thread from being reordered with ones on the other side of the fence (which seems very useful).
3. Incomprehensible standardese, except for the line "in many cases, memory_order_seq_cst atomic operations are reorderable with respect to other atomic operations performed by the same thread" which seems to contradict number 2.
How do these definitions mean the same thing? I find synchronizes-with a useful way to think about acquire and release, is there a similarly elegant mental model for seq_cst?