
Robert Ramey wrote:
http://tinyurl.com/s4ohn Shows the error message which is provoked by the following test code:
// test array of objects BOOST_STD_EXTENSION_NAMESPACE::hash_set<A> ahash_set; ... std::vector<A> tvec, tvec1; std::copy(ahash_set.begin(), ahash_set.end(), std::back_inserter(tvec)); // error starts here std::sort(tvec.begin(), tvec.end());
a) I can't see anything wrong with this. b) No other compilers complain c) I can't follow the error message
The error message means that there is no hash-function for A. The following example works for GCC 4.0.3, removing the hash<A>-specialization reveals the error you found: #include <vector> #include <ext/hash_set> class A {}; namespace __gnu_cxx { template<> struct hash<A> { size_t operator()( const A& ) const { return 0; } }; } int main() { __gnu_cxx::hash_set<A> ahash_set; std::vector<A> tvec, tvec1; std::copy(ahash_set.begin(), ahash_set.end(), std::back_inserter(tvec)); } HTH, Daniel