#include <boost/hana/config.hpp>
#include <boost/hana/core/when.hpp>
+#include <type_traits>
+
BOOST_HANA_NAMESPACE_BEGIN
//! @cond
template <typename T> struct tag_of<T const volatile> : tag_of<T> { };
template <typename T> struct tag_of<T&> : tag_of<T> { };
template <typename T> struct tag_of<T&&> : tag_of<T> { };
+
+ namespace detail {
+ template <typename T>
+ struct has_idempotent_tag
+ : std::is_same<hana::tag_of_t<T>,
+ std::remove_const_t<std::remove_reference_t<T>>>
+ { };
+ }
BOOST_HANA_NAMESPACE_END
#endif // !BOOST_HANA_CORE_TAG_OF_HPP