is_lock_free() return 可以对某些数据类型为真而对另一种数据类型为假吗?

Can is_lock_free() return true for some data types and false for another one?

我知道 is_lock_free 取决于硬件,但是当我在 ADT 上使用它时,它返回 false,但对于 int 类型返回 true。怎么会这样?

#include <iostream>
#include <atomic>
struct myType {

    size_t ID{};
    size_t to{};
};
int main() {


    std::atomic<myType> i{ };
    std::cout << "\n" << i.is_lock_free();

    std::atomic j { 1};
    std::cout << "\n" << j.is_lock_free();

}

Can is_lock_free() return true for some data types and false for another one?

是的,可以。显示的程序可能会输出 0 1.

事实上,如果不是这种情况,那么函数就没有意义成为模板的成员。