在运行时在模板参数之间选择

时间:2019-03-09 17:16:00

标签: c++ templates macros

请考虑以下方法:

template <class A, class B, template <class> class C>
void algorithm();

ABC代表algorithm的子算法,因此每个子算法只有少数选择。我希望能够在运行时指定要使用的子算法。因为模板必须在编译时指定;所以对我来说解决这个问题并不明显。

  • 可以将算法包装在std::function中,但这会导致性能严重下降。
  • 一个人可以手工编写很多代码,这很丑陋(但实际上相当可维护,因为不希望频繁添加新的子算法)。
  • 一个人可以使用宏魔术,但是我不知道该怎么做。

0 个答案:

没有答案