/*============================================================================= Copyright (c) 2011-2019 Bolero MURAKAMI https://github.com/bolero-MURAKAMI/Sprout Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #ifndef SPROUT_TUPLE_TUPLE_HASH_HPP #define SPROUT_TUPLE_TUPLE_HASH_HPP #include #include #include #include #include #include #include namespace sprout { namespace tuples { namespace detail { template inline SPROUT_CONSTEXPR std::size_t tuple_hash_value_impl(sprout::tuples::tuple const& v, sprout::index_tuple) { return sprout::hash_values(sprout::tuples::get(v)...); } } // namespace detail // // hash_value // template inline SPROUT_CONSTEXPR std::size_t hash_value(sprout::tuples::tuple const& v) { return sprout::tuples::detail::tuple_hash_value_impl( v, sprout::index_pack::make() ); } } // namespace tuples } // namespace sprout namespace std { #if defined(__clang__) # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wmismatched-tags" #endif // // hash // template struct hash > : public sprout::hash > {}; #if defined(__clang__) # pragma clang diagnostic pop #endif } // namespace std #endif // #ifndef SPROUT_TUPLE_TUPLE_HASH_HPP