std::hash partial specialization for std::unique_ptr (in bits/unique_ptr.h) and std::shared_ptr (in bits/shared_ptr.h) using std::unary_function. However, you should not use it because std::unary_function is deprecated.
I don't consider this a bug. Even if they were removed from the standard, we could choose to keep them and use them as implementation details, or non-standard extensions. Users shouldn't rely on deprecated features, because they can go away, but we control the implementation, so we know we can use them safely. Why is it a problem?
Jon is of course right, in terms of conformance. But I think we can start using __hash_base there too, just for consistency. Will do momentarily.
Author: paolo Date: Mon Jul 18 16:07:24 2011 New Revision: 176405 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176405 Log: 2011-07-18 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/48430 * include/bits/shared_ptr.h (struct hash<shared_ptr<>>): Use __hash_base. * include/bits/unique_ptr.h (struct hash<unique_ptr<>>): Likewise. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/shared_ptr.h trunk/libstdc++-v3/include/bits/unique_ptr.h
Done.