The lack of DWCAS as a primitive in general is really annoying, C++ aside. RISC-V's -A extension has no form of it, either; you only get XLEN-sized AMO + LL/SC (no 2*XLEN LL/SC either!)
It's one of those features that when you want it, you really really really want it, and the substitutions are all pretty bad in comparison.
It's one of those features that when you want it, you really really really want it, and the substitutions are all pretty bad in comparison.