Hello:

I think the typical usage pattern for using std::memory_order_consume is something like this:

Code:
std::atomic<int> state;
...
int x = state.load(std::memory_order_consume);
int y = x * slope; // correct because y depends on x
Would the following still be correct?

Code:
std::atomic<int *> state;
...
int * px = state.load(std::memory_order_consume);
*px = y / slope; // Does this break the dependency?
On one hand, I'd think this would be guaranteed to work because the memory being dereferenced to write the pointer "depends" on the pointer value, but on the other hand, it looks fishy to me and leaves me with some lingering doubts.

Thanks for any insight,
GeoRanger