Listing 3

// partial synopsis of TR1 header <functional>

namespace std {     // C++ Standard Library
 namespace tr1 {    // TR1 additions

    // TEMPLATE CLASS hash
template <class Ty> struct hash;

    // TEMPLATE CLASS hash SPECIALIZATIONS
template <> struct hash<bool>;
template <> struct hash<char>;
template <> struct hash<signed char>;
template <> struct hash<unsigned char>;
template <> struct hash<wchar_t>;
template <> struct hash<short>;
template <> struct hash<unsigned short>;
template <> struct hash<int>;
template <> struct hash<unsigned int>;
template <> struct hash<long>;
template <> struct hash<unsigned long>;
template <> struct hash<float>;
template <> struct hash<double>;
template <> struct hash<long double>;

template <class Ty> struct hash<Ty*>;

template <> struct hash<std::string>;
template <> struct hash<std::wstring>;

} }