Semântica de comparação com tipos std :: atomic
Estou tentando encontrar onde a semântica de comparação para o tipoT
comstd::atomic
é definido.
Eu sei que, além das especializações internas para tipos integrais,T
pode ser qualquerTriviallyCopyable
tipo. Mas como operações comocompare_and_exchange_X
saber comocomparar uma instância deT
?
Eu imagino que eles devem simplesmente fazer uma comparação byte byte do objeto definido pelo usuário (como ummemcmp
), mas não vejo em que parte do padrão isso é explicitamente mencionado.
Então, suponha que eu tenha:
struct foo
{
std::uint64_t x;
std::uint64_t y;
};
Como o compilador sabe como comparar doisstd::atomic<foo>
casos em que eu ligostd::atomic<foo>::compare_and_exchange_weak()
?