can we relax `compare_exchange_weak` with different memory orders? I would assume that for push operation we can do `memory_order_release` and `memory_order_relaxed` and for pop: `memory_order_release` and `memory_order_acquire` any thought on that?