Семантика сравнения с типами std :: atomic
Я пытаюсь найти где семантика сравнения для типаT
сstd::atomic
определено.
Я знаю, что помимо встроенных специализаций для целочисленных типов,T
может быть любымTriviallyCopyable
тип. Но как такие операции, какcompare_and_exchange_X
знать, каксравнить экземплярT
?
Я полагаю, что они должны просто сделать побайтовое сравнение пользовательского объекта (например,memcmp
) но я не вижу, где в стандарте это явно упоминается.
Итак, предположим, у меня есть:
struct foo
{
std::uint64_t x;
std::uint64_t y;
};
Как компилятор знает, как сравнивать дваstd::atomic<foo>
случаи, когда я звонюstd::atomic<foo>::compare_and_exchange_weak()
?