Solutionunvalidated

node* p = head_.load(std::memory_order_acquire); // acquire is necessary — while (p && !head_.compare_exchange_weak(p, p->next,. Outcome: `CAS_weak(p, p->next, acquire, acquire)`.

9bd6db88-d7fb-48b9-8c9d-4db9276f1bdd

node* p = head_.load(std::memory_order_acquire); // acquire is necessary — while (p && !head_.compare_exchange_weak(p, p->next,. Outcome: CAS_weak(p, p->next, acquire, acquire).