|  | Reference
Определяет boost::hashи функции помощника. namespace boost {
  template<typename T> struct hash;
  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<long long>;
  template<> struct hash<unsigned long long>;
  template<> struct hash<float>;
  template<> struct hash<double>;
  template<> struct hash<long double>;
  template<> struct hash<std::string>;
  template<> struct hash<std::wstring>;
  template<typename T> struct hash<T*>;
  template<> struct hash<std::type_index>;
  
  template<typename T> void hash_combine(size_t &, T const&);
  template<typename It> std::size_t hash_range(It, It);
  template<typename It> void hash_range(std::size_t&, It, It);
  
  std::size_t hash_value(bool);
  std::size_t hash_value(char);
  std::size_t hash_value(signed char);
  std::size_t hash_value(unsigned char);
  std::size_t hash_value(wchar_t);
  std::size_t hash_value(short);
  std::size_t hash_value(unsigned short);
  std::size_t hash_value(int);
  std::size_t hash_value(unsigned int);
  std::size_t hash_value(long);
  std::size_t hash_value(unsigned long);
  std::size_t hash_value(long long);
  std::size_t hash_value(unsigned long long);
  std::size_t hash_value(float);
  std::size_t hash_value(double);
  std::size_t hash_value(long double);
  template<typename T> std::size_t hash_value(T* const&);
  template<typename T, unsigned N> std::size_t hash_value(T (&val)[N]);
  template<typename T, unsigned N> std::size_t hash_value(const T (&val)[N]);
  template<typename Ch, typename A> 
    std::size_t hash_value(std::basic_string<Ch, std::char_traits<Ch>, A> const&);
  template<typename A, typename B> 
    std::size_t hash_value(std::pair<A, B> const&);
  template<typename T, typename A> 
    std::size_t hash_value(std::vector<T, A> const&);
  template<typename T, typename A> 
    std::size_t hash_value(std::list<T, A> const&);
  template<typename T, typename A> 
    std::size_t hash_value(std::deque<T, A> const&);
  template<typename K, typename C, typename A> 
    std::size_t hash_value(std::set<K, C, A> const&);
  template<typename K, typename C, typename A> 
    std::size_t hash_value(std::multiset<K, C, A> const&);
  template<typename K, typename T, typename C, typename A> 
    std::size_t hash_value(std::map<K, T, C, A> const&);
  template<typename K, typename T, typename C, typename A> 
    std::size_t hash_value(std::multimap<K, T, C, A> const&);
  template<typename T> std::size_t hash_value(std::complex<T> const&);
  std::size_t hash_value(std::type_index);
  template<typename T, std::size_t N> 
    std::size_t hash_value(std::array<T, N> const&);
  template<typename... T> std::size_t hash_value(std::tuple<T...>);
}
Support functions (Boost extension).
templatetypename T> void hash_combine(size_t & Tconst&;  Неоднократно вызывается для постепенного создания хеш-значения из нескольких переменных.         | Последствия: | Обновления семенас новым хеш-значением, генерируемым путем объединения его с результатомhash_value(v). Всегда будет производить один и тот же результат для одной и той же комбинацииseedиhash_value(v)во время одного запуска программы. |  | Примечания: |  hash_value называется без квалификации, так что перегрузки можно найти через ADL.  Это расширение до TR1  Forward заявлено в   Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы, поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи.  |   | Броски: | Бросает только если hash_value(T) бросает. Сильная безопасность исключения, если hash_value(T) также имеет сильную безопасность исключения. | 
 Ithash_tItпервый,последний;6><типовое имяvoidhash_range:6>size_t,первый,Последний;6>  Вычислите комбинированное хеш-значение элементов итераторного диапазона.                          <   Это расширение для TR1  Форвард объявлен в   Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы - поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи.    Броски:  Только броски, если hash_traits(std::iterator_traits::value_type)броски.hash_range(std::size_t&, It, It)имеет базовую безопасность исключения, еслиhash_value(std::iterator_traits::value_type)имеет базовую безопасность исключения. |  
Overloadable hash implementation (Boost extension).>>>>>>>>>>>>>><6   Как правило, пользователи не должны звонить напрямую, вместо этого они должны использовать boost::hash,boost::hash_rangeилиboost::hash_combine, которые называютhash_valueбез квалификации пространства имен, так что перегрузки для пользовательских типов обнаруживаются через ADL.         | Примечания: |  Это расширение для TR1  Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы - поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи.  |   | Броски: | Только броски, если пользователь предоставил версию hash_valueброски для элемента контейнера, или один из типов, хранящихся в паре.    |  |  |  |  |  |  |  |  |  |  |  | , , std:: В противном случае неопределенное значение, за исключением того, что равные аргументы должны давать тот же результат. |   | std::type_index  | val.hash_code() |  | 
 |