有没有办法将模板参数“捆绑”在一起以避免重复?
我有几个类和函数都使用相同的三个模板参数。拥有一个使用每个类/函数一次的函数并不罕见。生成的代码很快就会变得非常混乱。有没有更简洁的方法来编写这段代码?
// ContextFactory is a pointer to functions that instantiate objects that are subtypes of MetricContext
template<typename VertexID, typename EdgeMembershipType, typename SetBitmap>
using ContextFactory = MetricContext <VertexID, EdgeMembershipType, SetBitmap> *(*)(const char *);
template<typename VertexID, typename EdgeMembershipType, typename SetBitmap>
static vector<ContextFactory<VertexID, EdgeMembershipType, SetBitmap>> buildCFList() {
vector<ContextFactory<VertexID, EdgeMembershipType, SetBitmap>> answer;
answer.push_back(MetricContext<VertexID, EdgeMembershipType, SetBitmap>::template make<NeoContext<VertexID, EdgeMembershipType, SetBitmap >>);
return answer;
};
请注意,这个函数几乎有一半是 string 的重复<VertexID, EdgeMembershipType, SetBitmap>>
,但是这个 string 的每次使用都适用于不同的类或函数,所以我不认为 alias 会起作用。
(如果有帮助,这个函数的目的是创建一个指向函数的指针数组,这些函数将创建对象的子类型MetricContext<VertexID, EdgeMembershipType, SetBitmap>>