C++ 像std::atomic_这样的c风格的无原子函数是什么?

C++ 像std::atomic_这样的c风格的无原子函数是什么?,c++,c++11,atomic,C++,C++11,Atomic,我知道std::atomic::is\u lock\u free是与std::atomic::is\u lock\u free相对应的c风格自由函数 但是这个函数的参数类似于std::atomic\u是无锁的(const std::atomic*)。 std::atomic不是c风格的语法,因此std::atomic\u是无锁的无论如何不能在c文件中使用 那么为什么要引入这种c风格的自由函数呢?这个有什么用 编辑: 下面是C++中并发操作的解释。 自由函数设计为C兼容,因此它们在所有情况下都使用

我知道
std::atomic::is\u lock\u free
是与
std::atomic::is\u lock\u free
相对应的c风格自由函数

但是这个函数的参数类似于
std::atomic\u是无锁的(const std::atomic*)
std::atomic
不是c风格的语法,因此
std::atomic\u是无锁的
无论如何不能在c文件中使用

那么为什么要引入这种c风格的自由函数呢?这个有什么用

编辑:
下面是C++中并发操作的解释。 自由函数设计为C兼容,因此它们在所有情况下都使用指针而不是引用。例如


它说免费函数是为了C兼容。但是我想不出一个好的例子。

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


这似乎是“对于相同类型的所有原子对象,无锁查询的结果都是相同的”这一要求之前的遗留问题。。。考虑到这一要求,能够在没有任何对象实例的情况下查询类型是很有用的。

cppreference.com关于这一点的文档非常混乱。“参数是指向易失性原子类型的指针”到底意味着什么?指针具有类型和指向对象。它们不指向类型;在C++中,你不能接受一个类型的地址。@ BenVoigt:大概是指“指向一个原子原子类型的对象的指针”?它有点不精确,但看起来并不模棱两可。@NateEldredge:Ahh,但我可能想调用
atomic\u is\u lock\u free((A*)nullptr)
,并将这些神奇的词“插入到对象”以防止出现这种情况。@BenVoigt AFAICT这是不允许的,因为指定了独立函数来调用成员函数。