问题描述
我知道 std::atomic_is_lock_free
是对应于 std::atomic<T>::is_lock_free
的 c 风格自由函数。
但是这个函数的参数就像std::atomic_is_lock_free(const std::atomic<T>*)
。
std::atomic<T>
不是 c 风格的语法,所以 std::atomic_is_lock_free
无论如何都不能在 c 文件中使用。
那为什么要引入这个c风格的free函数呢?这个有什么用?
编辑:
下面是 C++ Concurrency in Action 的解释。
免费函数被设计为与 C 兼容,因此它们在所有情况下都使用指针而不是引用。例如......
解决方法
似乎没有任何区别,因为根据 the draft language 这两个函数都需要一个实际对象,甚至对两者都给出了完全相同的描述。
这似乎是在要求“无锁查询的结果对于相同类型的所有原子对象相同”之前的保留......鉴于该要求,能够查询一个没有任何对象实例的类型。