有没有办法将模板参数"捆绑"在一起以避免重复?
我有几个类和函数都使用相同的三个模板参数.拥有一次使用每个类/函数的函数并不罕见.结果代码非常快速地变得非常混乱.是否有更简洁的方法来编写此代码?
// ContextFactory is a pointer to functions that instantiate objects that are subtypes of MetricContext templateusing ContextFactory = MetricContext *(*)(const char *); template static vector > buildCFList() { vector > answer; answer.push_back(MetricContext ::template make >); return answer; };
请注意,此函数的近一半是字符串的重复
,但每次使用此字符串都适用于不同的类或函数,因此我认为别名不起作用.
(如果它有帮助,这个函数的目的是创建一个指向函数的指针数组,这些函数将创建作为子类型的子对象的对象 MetricContext
比@昆汀的是让你的模板一个较为具体的做法依赖于一个参数-预计将有类型定义 VertexID
,EdgeMembershipType
和SetBitmap
.
// ContextFactory is a pointer to functions that instantiate objects that are // subtypes of MetricContext templateusing ContextFactory = MetricContext *(*)(const char *); template static vector > buildCFList() { vector > answer; answer.push_back(MetricContext ::template make >); return answer; };
请注意,当您想要实际使用其中一个typedef时,您需要使用例如:typename Types::VertexID
.
(理想情况下,您会想出一个比Types
模板参数更好的名称.)