C++11 是否提供缩短千行长模板类名称的方法(std::以及我自己的类型)?
这将减少破译和 pretty-print 消息的痛苦。我想定义自定义别名,用独特且定义明确的替代项替换扩展的模板类型名称。
使用 typedef
或 using
没有帮助,因为编译器和 gdb
仍会打印完整的类型名称。 STL
以及自定义模板类型应该可以使用别名。理想情况下,gcc
、clang
和 gdb
应使用自定义名称。
最佳答案
不,语言本身没有提供改变工具显示名称的方式,这超出了标准的范围,并且不同的工具不会一致地处理。
GCC 有一个 -fno-pretty-templates
调整模板特化在诊断中的显示方式的选项。
你可以定义Type Printers在 Python 中告诉 GDB 如何打印你的类型。我已经为 libstdc++ 编写了一些,以便 GDB 将打印 std::vector<X>
不是std::vector<X, std::allocator<X> >
.它不会影响编译器诊断中显示的类型,只会影响 GDB。
关于c++ 11模板类型别名以减轻痛苦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074727/