std::atomic_shared_ptr 的状态

137*_*137 5 c++ atomic shared-ptr c++20

我试图将 std::shared_ptr 包装在 std::atomic 内。一个简单的例子是:

std::atomic<std::shared_ptr<int>> ptr{std::make_shared<int>(42)};
Run Code Online (Sandbox Code Playgroud)

编译时clang++ -std=c++2a -stdlib=libc++ test.cc出现以下错误:

_Atomic cannot be applied to type 'std::__1::shared_ptr<int>' which is not trivially copyable
Run Code Online (Sandbox Code Playgroud)

CppReference表明在 C++20 中,std::atomic 的构造函数支持 std::shared_ptr。

我想尝试std::atomic_shared_ptr但找不到合适的标头。既找不到班级experimental/atomicatomic找不到班级。

在 C++20 中是否有标准支持的方法将 std::shared_ptr 包装在 std::atomic 中?

更新

正如@NathanOliver 所建议的,现在我可以使用atomic_* 函数重载,而无需将shared_ptr 包装在原子中。