Listing 1

// TR1 additions to header <memory>

namespace std {
 namespace tr1 {
    // SHARED POINTERS
template<class Ty> class shared_ptr;

    // WEAK POINTERS
template<class Ty> class weak_ptr;
template<class Ty1, class Ty2>
  bool operator<(const weak_ptr<Ty1>&, const weak_ptr<Ty2>&);
template <class Ty>
  void swap(const weak_ptr<Ty>&, const weak_ptr<Ty>&);

    // UTILITY CLASSES AND TEMPLATES
template <class Ty> class enable_shared_from_this;
class bad_weak_ptr : public std::exception {
public:
  bad_weak_ptr();
  const char *what() throw();
  };
} }