diff --git a/xml/issue4004.xml b/xml/issue4004.xml
new file mode 100644
index 0000000000..d5230215eb
--- /dev/null
+++ b/xml/issue4004.xml
@@ -0,0 +1,65 @@
+
+
+
+
+ (1.2) — memory_order::release, memory_order::acq_rel, and memory_order::seq_cst: a store operation
+performs a release operation on the affected memory location. (1.3) — memory_order::consume: a load operation performs a consume operation on the affected memory location.
+[…] (1.4) — memory_order::acquire, memory_order::acq_rel, and memory_order::seq_cst: a
+load operation performs an acquire operation on the affected memory location.
+What do the store and load operations intend to mean in this context? If there is no extra specification,
+it is easy to consider them as the operations performed by the non-static member functions "store" and "load"
+defined in the atomic class (template).
+
+
+
+
+
+++An atomic operation A that performs a release operation on an atomic object M synchronizes with +an atomic operation B that performs an acquire operation on M and takes its value from any side +effect in the release sequence headed by A. +
+
+According to the above interpretation, A is an operation performed by the non-static member function +store, however, I think the following example can establish the synchronization relationship +
+++std::atomic<int> x{0}; +Thread 1: +int expected = 0; +x.compare_exchange_strong(expected, 1, memory_order::release, memory_order::relaxed ); //#1 + +Thread 2: +int expected = 1; +while(x.compare_exchange_strong( expected, 2, memory_order::acquire, memory_order::relaxed )){} // #2 +
+Assuming the RMW operations are successful in the two threads, I think #1 intends to perform a +release operation while #2 performs an acquire operation, and hence they can establish the +synchronization relationship, however, they both are RMW operations. +
+It should be clearly defined which are store operations and which are load operations. + + + +