我有一个包含元组的stl::list
,想要使用std::find_if
进行多类型比较来查找元素。我是否可以将元组类型与特定模板化的get()
函数关联起来?这样就不需要将字段编号传递给谓词模板。
我创建了一个如下所示的谓词:
template<typename T, size_t field>
struct obj_predicate : public std::unary_function<ObjectRecordType, bool>
{
const T* comparisonObject;
obj_predicate(const T& cObj) : comparisonObject(&cObj) {}
bool operator()(const ObjectRecordType& obj) const
{
return *comparisonObject == std::tr1::get<field>(obj);
}
};
我想要的是像 obj_predicate<int>(3)
这样意识到元组中 int
的位置的功能。
createInstance
方法,并使用不同的字段编号和值调用find_if
(当然可以在createInstance
中使用模板typename声明)。 - aambrozkiewicz