#ifndef SPROUT_FUNCTIONAL_HASH_HASH_FWD_HPP #define SPROUT_FUNCTIONAL_HASH_HASH_FWD_HPP #include #include namespace sprout { // // hash // template struct hash; // // to_hash // template SPROUT_CONSTEXPR std::size_t to_hash(T&& v); // // hash_value // template inline SPROUT_CONSTEXPR std::size_t hash_value(T const& v); // // hash_combine // template inline SPROUT_CONSTEXPR std::size_t hash_combine(std::size_t seed, Args const&... args); // // hash_values // template inline SPROUT_CONSTEXPR std::size_t hash_values(Args const&... args); // // hash_range // template SPROUT_CONSTEXPR std::size_t hash_range(std::size_t seed, Iterator first, Iterator last); template SPROUT_CONSTEXPR std::size_t hash_range(Iterator first, Iterator last); template SPROUT_CONSTEXPR std::size_t hash_range(std::size_t seed, InputRange const& rng); template SPROUT_CONSTEXPR std::size_t hash_range(InputRange const& rng); // // hash_value_traits // template struct hash_value_traits; } // namespace sprout #endif // #ifndef SPROUT_FUNCTIONAL_HASH_HASH_FWD_HPP