一個是模板類std::atomic
的成員函數,一個是模板函數,看起來他們做的是同樣的事情。由於std
是一個類庫,爲什麼它提供了類和非類的版本,我想同樣的操作?C++ 11:原子<T> :: store與atomic_store之間有什麼區別<T>
他們之間有任何真正的區別嗎?
一個是模板類std::atomic
的成員函數,一個是模板函數,看起來他們做的是同樣的事情。由於std
是一個類庫,爲什麼它提供了類和非類的版本,我想同樣的操作?C++ 11:原子<T> :: store與atomic_store之間有什麼區別<T>
他們之間有任何真正的區別嗎?
語義沒有區別。免費功能是試圖實現與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);
}
就像你說的 - 一個是班級,另一個是功能。類有接口 - atomic<T>
將提供商店,負載,適當的構造函數等。
另一方面,atomic_store
可能是專門爲您的類型。