我试图将 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/atomic也atomic找不到班级。
在 C++20 中是否有标准支持的方法将 std::shared_ptr 包装在 std::atomic 中?
更新
正如@NathanOliver 所建议的,现在我可以使用atomic_* 函数重载,而无需将shared_ptr 包装在原子中。