c++ 11模板类型别名以减轻痛苦

标签 c++ templates c++11 gcc clang

C++11 是否提供缩短千行长模板类名称的方法(std::以及我自己的类型)?

这将减少破译和 pretty-print 消息的痛苦。我想定义自定义别名,用独特且定义明确的替代项替换扩展的模板类型名称。

使用 typedefusing 没有帮助,因为编译器和 gdb 仍会打印完整的类型名称。 STL 以及自定义模板类型应该可以使用别名。理想情况下,gccclanggdb 应使用自定义名称。

最佳答案

不,语言本身没有提供改变工具显示名称的方式,这超出了标准的范围,并且不同的工具不会一致地处理。

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/

相关文章:

java - 内联条件否定

c++ - 在工厂模式中自动注册派生类

c++ - 没有从 const_iterator 类型的返回值到迭代器的可行转换

c++ - 通过重新使用的非 `const` 名称修改动态分配的 -`const` 对象是否合法?

c++ - 有效地从 std::list 中删除最后一个元素

c++ - 文件处理 C++ 时出错

C++ 使用 int 从列表中设置枚举

c++ - 从具有未知参数计数的函数创建仿函数

c++ - 在模板参数上使用隐式命名空间

c++ - 用户提供的 terminate() 函数必须是线程安全的吗?