我試圖找到類型T
與std::atomic
的比較語義的定義。比較語義與std ::原子類型
我知道,除了內置專門的積分類型,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()
?
它不會「比較T的一個實例」。標準中的措辭是它「比較你的對象佔用的內存的內容」,意味着對象類型被忽略。 – 2014-11-03 22:54:03