运行时的模板类型名称
Template type name at runtime
这更像是一个好奇的问题,而不是实际需求。代码如下,问题是:
// header file
class IRNode {
virtual void imple() =0;
}
// one and only derivative of IRNode
template<typename T>
class BaseIRNode : public IRNode {
// .. some code
void imple() {}
};
// a library function
IRNode* some_fun() {
return new BaseIRNode<int>(); // just for example, assume we dont know this!
}
// my code
IRNode* myObj = some_func();
// I wonder what template T was used to construct BaseIRNode concrete object
// how can I find that out ?
更新:所以我跳过了一些代码以使其更简单,但似乎我省略了太多代码。
这
不会编译,因为BaseIRNode
是一个类模板,而不是一个类。您需要some_fun
函数模板,然后您可以使用从参数类型推导出模板参数并对其进行操作:
template <typename T>
void some_fun(BaseIRNode<T>* node) {
//some stuff with T
}
相关文章:
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 通过switch和static_cast访问多态对象的运行时类型
- 值到类型的运行时映射
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 运行时如何在运行时推断类型?
- 在运行时检查继承是否只有一种类型和 void*
- 运行时错误:引用绑定到类型为"int"的空指针
- 无法将运行时类绑定到 XAML T 必须是 WinRT 类型
- 在 C++ 中运行时调用模板时,是否可以切换模板的参数类型?
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 在运行时选择类成员的类型
- CPP 数据类型运行时溢出
- 类型不可知的抽象以使用相同的运行时接口处理正向和反向迭代器和范围?
- 只知道运行时的数据类型.如何将数据详细信息隐藏到使用它们的其他类
- 运行时错误:有符号整数溢出:964632435 * 10 无法在类型 'int' 中表示
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- 静态类型是在编译时还是运行时强制实施的?
- 根据运行时提供的类型执行模板函数
- 如何在void*指针下检查运行时类型(允许简单类型,没有基类)?
- 由于数据类型在运行时变化而卡在设计上