像 std::atomic_is_lock_free 这样的 c 风格原子自由函数有什么用?

问题描述

我知道 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 兼容,因此它们在所有情况下都使用指针而不是引用。例如......

它说免费功能是为了与 C 兼容。但我想不出一个很好的例子。

解决方法

似乎没有任何区别,因为根据 the draft language 这两个函数都需要一个实际对象,甚至对两者都给出了完全相同的描述。

这似乎是在要求“无锁查询的结果对于相同类型的所有原子对象相同”之前的保留......鉴于该要求,能够查询一个没有任何对象实例的类型。