/*! @file Defines `boost::hana::keys`. @copyright Louis Dionne 2013-2017 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_KEYS_HPP #define BOOST_HANA_KEYS_HPP #include #include #include #include #include #include #include namespace boost { namespace hana { //! @cond template constexpr auto keys_t::operator()(Map&& map) const { return keys_impl::type>::apply( static_cast(map) ); } //! @endcond template struct keys_impl> : default_ { template static constexpr auto apply(Args&& ...) = delete; }; template struct keys_impl::value>> { template static constexpr auto apply(Object const&) { return hana::transform(hana::accessors(), hana::first); } }; }} // end namespace boost::hana #endif // !BOOST_HANA_KEYS_HPP