(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
29_atomics/
atomic/
lwg3220.cc
// { dg-do compile { target c++11 } }

// std::shared_ptr is not freestanding.
// { dg-require-effective-target hosted }

// DR 3220. P0558 broke conforming C++14 uses of atomic shared_ptr

#include <atomic>
#include <memory>

struct Abstract { virtual void test() = 0; };
struct Concrete : Abstract { virtual void test() override {} };

int main() {
  std::shared_ptr<Abstract> ptr;
  std::atomic_store<Abstract>(&ptr, std::make_shared<Concrete>());
}