我有一个type_info
在我的属性映射中定义属性类型的对象。我想运行一段代码(例如从 cin 读取值),使用我的 type_info 对象定义的类型进行参数化。它可能是一些模板函数,即:
template<typename T>
void do_something()
{
T a; cin >> a;
}
然后在代码的其他部分我想调用它:
const type_info &type_description = foo.get_type_of_something();
do_some_magic(do_something, type_description);
我正在寻找do_some_magic
专门do_something
为type_descriptor
. 模板函数可以包装成某种结构,没关系。
当然,它只能用于预先定义的有限类型集(因为必须在编译时为每个类型生成特化)。
一种方法是制作一个链if(type_descriptor==typeid(int)) /*...*/ else if(type_descriptor==...
等,但这不是非常漂亮的解决方案(imo)。
我想知道是否存在更干净的解决方案?或者也许某些库(最好是“boost”)已经实现了这种机制?