9 inline std::string
get_type_name()
11 typedef typename
std::remove_reference
<T
>::type TR
;
12 std::unique_ptr
<char, void (*)(void*)> own(
13 abi::__cxa_demangle(typeid(TR
).name(), nullptr, nullptr, nullptr),
15 std::string r
= own
!= nullptr ? own
.get() : typeid(TR
).name();
16 if (std::is_const
<TR
>::value
)
18 if (std::is_volatile
<TR
>::value
)
20 if (std::is_lvalue_reference
<T
>::value
)
22 else if (std::is_rvalue_reference
<T
>::value
)