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()?

questionAnswers(2)

yourAnswerToTheQuestion