impl_ptr_policy::copied
// In header: <detail/copied.hpp> template<typename impl_type, typename allocator> struct copied { // types typedef copied this_type; typedef detail::traits::copyable< impl_type, allocator > traits_type; typedef typename traits_type::pointer traits_ptr; // construct/copy/destruct template<typename... arg_types> copied(detail::in_place_type, arg_types &&...); copied(std::nullptr_t); copied(impl_type *); copied(this_type &&); copied(this_type const &); this_type & operator=(this_type &&); this_type & operator=(this_type const &); ~copied(); // public member functions template<typename derived_type, typename... arg_types> void emplace(arg_types &&...); bool operator<(this_type const &) const; void swap(this_type &); impl_type * get() const; long use_count() const; };