C++20 이전
shared_ptr 과 weak_ptr 의 참조 카운트는 원자적으로 동작하지만 데이터는 그렇지
않았다. 그리고 atomic 에서 shared_ptr 과 weak_ptr 을 지원하지 않았다.
error C2338: static_assert failed: 'atomic<T> requires T to be trivially copyable, copy
constructible, move constructible, copy assignable, and move assignable.'
message : 컴파일되는 클래스 템플릿 인스턴스화 'std::atomic<std::shared_ptr<int>>'에
대한 참조를 확인하세요.