gcc 10 support for atomic shared_ptr

805 Views Asked by At

I thought g++ 10.3 should have supported the C++20 feature of atomic shared_ptr? But I am still getting the following error

#include <atomic>
#include <thread>
#include <memory>

int main() {
  std::atomic<std::shared_ptr<int>> a = std::make_shared<int>(1);
}
In file included from test.cc:1:
/usr/include/c++/10/atomic: In instantiation of ‘struct std::atomic<std::shared_ptr<int> >’:
test.cc:6:37:   required from here
/usr/include/c++/10/atomic:195:21: error: static assertion failed: std::atomic requires a trivially copyable type
  195 |       static_assert(__is_trivially_copyable(_Tp),
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1

There are 1 best solutions below

0
On

The documentation lists it as supported only since GCC 12.1, i.e. the next release, and compiler explorer shows that your code compiles on GCC trunk: https://godbolt.org/z/4ThzMrjM9

https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html