3 #ifndef DUNE_CLASSNAME_HH
4 #define DUNE_CLASSNAME_HH
17 #endif // #if HAVE_CXA_DEMANGLE
28 typedef typename std::remove_reference<T>::type TR;
29 std::string
className =
typeid( TR ).name();
32 char *demangled = abi::__cxa_demangle(
className.c_str(), 0, 0, &status );
36 std::free( demangled );
38 #endif // #if HAVE_CXA_DEMANGLE
39 if (std::is_const<TR>::value)
41 if (std::is_volatile<TR>::value)
43 if (std::is_lvalue_reference<T>::value)
45 else if (std::is_rvalue_reference<T>::value)
57 return className<T>();
61 #endif // DUNE_CLASSNAME_HH