C++11:atomic<T>::store 和 atomic_store<T> 有什么区别

C++11: what's the difference between atomic<T>::store and atomic_store<T>

一个是template的成员函数class std::atomic,一个是template function,好像是做同样的事情。由于 std 是一个 class 库,为什么它同时提供 class 和 none-class 版本,我认为是相同的操作?

它们之间有什么真正的区别吗?

正如您所说 - 一个是 class,另一个是函数。 Class 具有接口 - atomic<T> 将提供存储、加载、适当的构造函数等。

另一方面,atomic_store 可以专门针对您的类型。

语义上没有区别。免费功能是为了实现与 C11 的源代码兼容性的尝试:

#ifdef __cplusplus
#include <atomic>
#define _Atomic(X) std::atomic<X>
#else
#include <stdatomic.h>
#endif

_Atomic(int) c;

int get_c(void) { 
    return atomic_load(&c); 
}