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 );
35 className = demangled;
36 std::free( demangled );
38 #endif // #if HAVE_CXA_DEMANGLE 39 if (std::is_const<TR>::value)
40 className +=
" const";
41 if (std::is_volatile<TR>::value)
42 className +=
" volatile";
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 std::string className()
Provide the demangled class name of a type T as a string.
Definition: classname.hh:26
Dune namespace.
Definition: alignedallocator.hh:9