/*! @file Defines `boost::hana::detail::hash_table`. @copyright Louis Dionne 2016 @copyright Jason Rice 2016 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_HANA_DETAIL_HASH_TABLE_HPP #define BOOST_HANA_DETAIL_HASH_TABLE_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include BOOST_HANA_NAMESPACE_BEGIN namespace detail { template struct bucket { }; template struct hash_table : Buckets... { }; // find_indices: // Returns an `index_sequence` containing possible indices for the given // `Key` in the `Map`. template std::index_sequence find_indices_impl(bucket const&); template std::index_sequence<> find_indices_impl(...); template struct find_indices { using Hash = typename decltype(hana::hash(std::declval()))::type; using type = decltype(detail::find_indices_impl(std::declval())); }; // end find_indices // find_index: // Returns the actual index of a `Key` in the `Map`. The type of the key // associated to any given index must be retrievable with the `KeyAtIndex` // alias. template