|  | @@ -89,16 +89,17 @@ struct hash<const char*> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  template <typename Key, typename Data,
 | 
	
		
			
				|  |  |            typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | -          typename EqualKey = int,
 | 
	
		
			
				|  |  | +          typename EqualKey = std::equal_to<Key>,
 | 
	
		
			
				|  |  |            typename Alloc = std::allocator< std::pair<const Key, Data> > >
 | 
	
		
			
				|  |  | -class hash_map : public std::map<Key, Data, HashFcn, Alloc> {
 | 
	
		
			
				|  |  | +class hash_map : public std::map<Key, Data, HashFcn, EqualKey, Alloc> {
 | 
	
		
			
				|  |  |   public:
 | 
	
		
			
				|  |  | -  hash_map(int = 0) {}
 | 
	
		
			
				|  |  | +  hash_map(int = 0, const HashFcn& = HashFcn(), const EqualKey& = EqualKey(),
 | 
	
		
			
				|  |  | +           const Alloc& = Alloc()) {}
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  template <typename Key,
 | 
	
		
			
				|  |  |            typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | -          typename EqualKey = int >
 | 
	
		
			
				|  |  | +          typename EqualKey = std::equal_to<Key> >
 | 
	
		
			
				|  |  |  class hash_set : public std::set<Key, HashFcn> {
 | 
	
		
			
				|  |  |   public:
 | 
	
		
			
				|  |  |    hash_set(int = 0) {}
 | 
	
	
		
			
				|  | @@ -126,19 +127,21 @@ struct hash<const char*>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  template <typename Key, typename Data,
 | 
	
		
			
				|  |  |            typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | -          typename EqualKey = int,
 | 
	
		
			
				|  |  | +          typename EqualKey = std::equal_to<Key>,
 | 
	
		
			
				|  |  |            typename Alloc = std::allocator< std::pair<const Key, Data> > >
 | 
	
		
			
				|  |  | -class hash_map : public GOOGLE_PROTOBUF_HASH_NAMESPACE::hash_map<
 | 
	
		
			
				|  |  | -    Key, Data, HashFcn, Alloc> {
 | 
	
		
			
				|  |  | +class hash_map
 | 
	
		
			
				|  |  | +    : public GOOGLE_PROTOBUF_HASH_NAMESPACE::GOOGLE_PROTOBUF_HASH_MAP_CLASS<
 | 
	
		
			
				|  |  | +          Key, Data, HashFcn, EqualKey, Alloc> {
 | 
	
		
			
				|  |  |   public:
 | 
	
		
			
				|  |  | -  hash_map(int = 0) {}
 | 
	
		
			
				|  |  | +  hash_map(int = 0, const HashFcn& = HashFcn(), const EqualKey& = EqualKey(),
 | 
	
		
			
				|  |  | +           const Alloc& = Alloc()) {}
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -template <typename Key,
 | 
	
		
			
				|  |  | -          typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | -          typename EqualKey = int >
 | 
	
		
			
				|  |  | -class hash_set : public GOOGLE_PROTOBUF_HASH_NAMESPACE::hash_set<
 | 
	
		
			
				|  |  | -    Key, HashFcn> {
 | 
	
		
			
				|  |  | +template <typename Key, typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | +          typename EqualKey = std::equal_to<Key> >
 | 
	
		
			
				|  |  | +class hash_set
 | 
	
		
			
				|  |  | +    : public GOOGLE_PROTOBUF_HASH_NAMESPACE::GOOGLE_PROTOBUF_HASH_SET_CLASS<
 | 
	
		
			
				|  |  | +          Key, HashFcn, EqualKey> {
 | 
	
		
			
				|  |  |   public:
 | 
	
		
			
				|  |  |    hash_set(int = 0) {}
 | 
	
		
			
				|  |  |  };
 | 
	
	
		
			
				|  | @@ -169,7 +172,8 @@ struct hash<const char*> {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -template <typename Key, typename Data, typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  | +template <typename Key, typename Data,
 | 
	
		
			
				|  |  | +          typename HashFcn = hash<Key>,
 | 
	
		
			
				|  |  |            typename EqualKey = std::equal_to<Key>,
 | 
	
		
			
				|  |  |            typename Alloc = std::allocator< std::pair<const Key, Data> > >
 | 
	
		
			
				|  |  |  class hash_map
 |