打破对模板参数

时间:2017-09-26 02:24:50

标签: c++ templates

在项目中,我将运行时标注的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是标准。

非常感谢!

0 个答案:

没有答案