15#if defined(__GNUC__) || defined(__clang__)
43template <
typename type>
47#if defined(__GNUC__) || defined(__clang__)
52 safe_ptr_t demangled_name_ptr{abi::__cxa_demangle(
typeid(type).name(), 0, 0, &status),
64 + (status == -1 ?
"A memory allocation failure occurred."
65 : (status == -2 ?
"mangled_name is not a valid name under the C++ ABI mangling rules."
66 : (status == -3 ?
"One of the arguments is invalid." :
"Unknown Error")))
72 demangled_name =
typeid(type).name();
75 if constexpr (std::is_const_v<std::remove_reference_t<type>>)
76 demangled_name +=
" const";
77 if constexpr (std::is_lvalue_reference_v<type>)
78 demangled_name +=
" &";
79 if constexpr (std::is_rvalue_reference_v<type>)
80 demangled_name +=
" &&";
82 return demangled_name;
std::string const type_name_as_string
Defines the human-readable name of the given type using the typeid operator.
Definition: type_name_as_string.hpp:44
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29