在项目中,我将运行时标注的Mesh对象转换为编译时对象。为此,我将类转换为模板。
我有一个模板Mesh和共享指针:
template<int dim> class Mesh;
template<int dim> using PtrMesh = std::shared_ptr<Mesh<dim>>;
PtrMesh在整个项目中经常使用。只要它只是一个函数参数,这不是问题:
template<int dim> void fun(PtrMesh<dim> mesh);
dim是从调用者那里推断出来的。
但是当PtrMesh是一种成员变量或方法返回类型时:
template<int dim>
class X {
PtrMesh<dim> mesh;
};
此类始终要转换为模板,并且在实例化类时必须知道dim。这样,变化比我预期的要快得多。
是否有可能打破这种依赖或解决它?
我认为,一种方法是使用boost :: any,但这对PtrMesh的用户来说也不透明。 PtrMesh mesh = getMesh()等分配可以重写为 auto mesh = getMesh
C ++ 11是标准。
非常感谢!