Is it possible to coax std::atomic to output CMPXCHG16B for types where I'm not interested in using the atomic interlocked operations on Windows x64, or do I just have to suck it up and do the atomic operations by hand? I can get GCC/Clang to do this on Linux so I suspect its just an issue with the Microsoft Standard Library.
struct Byte16
{
int64_t a, b;
};
std::atomic<Byte16> atm;
Byte16 a = { 1, 2 };
atm.compare_exchange_strong(...); // This has a lock on Windows, not on Linux version of code