From a039f8c318d6a944d7fd220972d2b91a9fb33035 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 29 Sep 2021 20:53:38 +0300 Subject: [PATCH] Support -fno-rtti --- include/boost/core/type_name.hpp | 69 +++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/include/boost/core/type_name.hpp b/include/boost/core/type_name.hpp index 8d0add8..66ec916 100644 --- a/include/boost/core/type_name.hpp +++ b/include/boost/core/type_name.hpp @@ -69,6 +69,8 @@ template struct tn_is_reference #endif +#if !defined(BOOST_NO_TYPEID) + // typeid_name template std::string typeid_name() @@ -106,25 +108,6 @@ template std::string typeid_name() return r; } -// tn_to_string - -#if defined(BOOST_MSVC) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -#endif - -inline std::string tn_to_string( unsigned long n ) -{ - char buffer[ 32 ]; - std::sprintf( buffer, "%lu", n ); - - return buffer; -} - -#if defined(BOOST_MSVC) -# pragma warning( pop ) -#endif - // template names template std::string class_template_name() @@ -148,6 +131,54 @@ template std::string map_template_name() return class_template_name(); } +#else // #if !defined(BOOST_NO_TYPEID) + +template std::string typeid_name() +{ + return "_Tp"; +} + +template std::string class_template_name() +{ + return "_Tm"; +} + +template std::string sequence_template_name() +{ + return "_Sq"; +} + +template std::string set_template_name() +{ + return "_St"; +} + +template std::string map_template_name() +{ + return "_Mp"; +} + +#endif + +// tn_to_string + +#if defined(BOOST_MSVC) +# pragma warning( push ) +# pragma warning( disable: 4996 ) +#endif + +inline std::string tn_to_string( unsigned long n ) +{ + char buffer[ 32 ]; + std::sprintf( buffer, "%lu", n ); + + return buffer; +} + +#if defined(BOOST_MSVC) +# pragma warning( pop ) +#endif + // tn_add_each #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)