1 // Copyright 2019 Hans Dembinski
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt
5 // or copy at http://www.boost.org/LICENSE_1_0.txt)
7 #ifndef BOOST_HISTOGRAM_DETAIL_TYPE_NAME_HPP
8 #define BOOST_HISTOGRAM_DETAIL_TYPE_NAME_HPP
10 #include <boost/core/typeinfo.hpp>
11 #include <boost/type.hpp>
19 std::string type_name_impl(boost::type<T>) {
20 return boost::core::demangled_name(BOOST_CORE_TYPEID(T));
24 std::string type_name_impl(boost::type<T const>) {
25 return type_name_impl(boost::type<T>{}) + " const";
29 std::string type_name_impl(boost::type<T&>) {
30 return type_name_impl(boost::type<T>{}) + " &";
34 std::string type_name_impl(boost::type<T&&>) {
35 return type_name_impl(boost::type<T>{}) + " &&";
39 std::string type_name() {
40 return type_name_impl(boost::type<T>{});
44 } // namespace histogram