我试图找到类型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