This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
problem using hash_set with string with g++
- To: gcc-help at gcc dot gnu dot org
- Subject: problem using hash_set with string with g++
- From: Amit Mehrotra <amehrotr at mail dot vlsi dot csl dot uiuc dot edu>
- Date: Fri, 31 Dec 1999 16:15:33 -0600
- Organization: Coordinated Science Lab UIUC
If I compile the following program hashTest.cc with no options, i.e.,
Type = int, it compiles and runs without any problems. If I compile it
with
g++ -DSTRING_TYPE hashTest.cc
i.e., Type = string, it give me an error at genericHash::const_iterator.
I can't understand why this is the case?
Amit
---------------------------hashTest.cc-------------------------------
#include <hash_set>
#ifdef STRING_TYPE
#include <string>
typedef string Type;
#else
typedef int Type;
#endif
typedef hash_set<Type> genericHash;
void lookup(const genericHash &Set, const Type &word) {
genericHash::const_iterator it = Set.find(word);
cout << word << ": " << (it != Set.end() ? "present" : "not
present") << endl;
}
int main() {
genericHash Set;
#ifdef STRING_TYPE
Set.insert("oof"); Set.insert("goof"); Set.insert("hoof");
lookup(Set, "goof"); lookup(Set, "foof");
#else
Set.insert(1); Set.insert(5); Set.insert(6); lookup(Set, 1);
lookup(Set, 9);
#endif
}
----------------------errors with g++
-DSTRING_TYPE----------------------
/usr/lib/gcc-lib/i386-redhat-linux/2.95.2/../../../../include/g++-3/stl_hashtable.h:
In method `size_t
hashtable<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,hash<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,_Identity<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,equal_to<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,allocator<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> > >::_M_bkt_num_key(const Type &, unsigned int) const':
/usr/lib/gcc-lib/i386-redhat-linux/2.95.2/../../../../include/g++-3/stl_hashtable.h:521:
instantiated from
`hashtable<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,hash<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,_Identity<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,equal_to<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,allocator<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> > >::_M_bkt_num_key(const Type &) const'
/usr/lib/gcc-lib/i386-redhat-linux/2.95.2/../../../../include/g++-3/stl_hashtable.h:471:
instantiated from
`hashtable<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,hash<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,_Identity<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,equal_to<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,allocator<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> > >::find(const Type &) const'
/usr/lib/gcc-lib/i386-redhat-linux/2.95.2/../../../../include/g++-3/stl_hash_set.h:179:
instantiated from
`hash_set<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>,hash<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,equal_to<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
>
>,allocator<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> > >::find(const Type &) const'
hashTest.cc:10: instantiated from here
/usr/lib/gcc-lib/i386-redhat-linux/2.95.2/../../../../include/g++-3/stl_hashtable.h:531:
no match for call to `(const
hash<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> >) (const
basic_string<char,string_char_traits<char>,__default_alloc_template<true,0>
> &)'