我想获取类型名称并将其打印出来以进行调试。我使用以下代码:
#include <cxxabi.h>
inline const char* demangle(const char *s) {
abi::__cxa_demangle(s, 0, 0, NULL);
}
template<typename T>
inline const char* type_name() {
return demangle(typeid(T).name());
}
它的功能很好,但我认为存在不必要的运行时开销。是否有一种方法可以在编译时计算出可读性更高的类型标识符呢?我想到了类似于这样的东西:
boost::mpl::type_name<MyType>::value
该函数将返回一个类型名称的字符串常量。