打印实例化链
Print instantiation chain
我正在使用STL调试一些C++解析器C++0x容器(工具链是GCC 4.7.0)。
而且由于 STL 重新绑定代码很难理解,我需要以某种方式为像 std::vector<T>::reference
这样的 typedef 打印完整的实例链。当然,它只是解析为 T&
,但在它通过 __gnu_cxx
和其他内部结构中的至少 7 个不同模板之前。
所以我期待在出现模板错误的情况下打印的东西,但对于编译器实例化的每个类。可能吗?海湾合作委员会插件,也许...
UPD:嗯,我已经手动实例化了所有必需的模板。似乎没有自动执行此操作的好方法,除了在 GCC 代码本身插入一些调试 printf 语句。
由于您使用的是GCC 4.7,因此我假设您使用的是可以对代码运行clang的系统。 Clang的错误消息,特别是模板,非常好。
模板 类示例 { example(const T& t) : t_(t) {} T&t_; }; 国际 a; 示例 e(a);
输出:
T.cpp:8:14:错误:调用类"示例"的私有构造函数 示例 e(a); ^ T.cpp:3:5:注意:此处隐式声明为私有 example(const T& t) : t_(t) {} ^ T.cpp:3:27:错误:将引用类型"int"绑定到类型"const int"的值 限定 符 example(const T& t) : t_(t) {} ^ ~ T.cpp:8:14:注意:此处请求成员函数"示例::示例"的实例化 示例 e(a); ^ 生成 2 个错误。
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 约束和显式模板实例化
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 静态数据成员模板专用化的实例化点在哪里
- 错误的cv::face FacemarkLBF实例化
- C++的解析器在可以区分比较和模板实例化之前会做什么?
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 检查某些类型是否是模板类 std::optional 的实例化
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- 模板化类构造函数的模板实例化
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 受约束的成员函数和显式模板实例化
- 如何在实例化类类型的变量时打印其名称
- 打印实例化链