Listing 1
// TR1 additions to header <memory> namespace std { namespace tr1 { // SHARED POINTERS template<class Ty> class shared_ptr; template<class Ty1, class Ty2> bool operator==(const shared_ptr<Ty1>&, const shared_ptr<Ty2>&); template<class Ty1, class Ty2> bool operator!=(const shared_ptr<Ty1>&, const shared_ptr<Ty2>&); template<class Ty1, class Ty2> bool operator<(const shared_ptr<Ty1>&, const shared_ptr<Ty2>&); template<class Elem, class Tr, class Ty> basic_ostream<Elem, Tr>& operator<<( basic_ostream<Elem, Tr>&, const shared_ptr<Ty>&); template<class Ty> void swap(shared_ptr<Ty>&, shared_ptr<Ty>&); template<class D, class Ty> D *get_deleter(const shared_ptr<Ty>&); // FUNCTIONS template<class Ty, class Other> shared_ptr<Ty> const_pointer_cast(const shared_ptr<Other>&); template<class Ty, class Other> shared_ptr<Ty> dynamic_pointer_cast(const shared_ptr<Other>&); template<class Ty, class Other> shared_ptr<Ty> static_pointer_cast(const shared_ptr<Other>&); } };