// { 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>()); | |
} |