/*! @file Defines `boost::hana::tag_of` and `boost::hana::tag_of_t`. @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_CORE_TAG_OF_HPP #define BOOST_HANA_CORE_TAG_OF_HPP #include #include #include BOOST_HANA_NAMESPACE_BEGIN //! @cond template struct tag_of : tag_of> { }; //! @endcond namespace core_detail { template struct is_valid { static constexpr bool value = true; }; } template struct tag_of> { using type = T; }; template struct tag_of::value >> { using type = typename T::hana_tag; }; template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; template struct tag_of : tag_of { }; BOOST_HANA_NAMESPACE_END #endif // !BOOST_HANA_CORE_TAG_OF_HPP