У меня есть stl::list
кортежей, которые я хочу найти для элемента, используя std::find_if
, используя несколько типов сравнения в каждом. Можно ли связать тип кортежа с определенной шаблонной функцией get()
? Таким образом, нет необходимости передавать номер поля в предикатный шаблон.C++ Найти элемент в списке кортежей с использованием предиката
Я создал предикат, как это:
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
в кортеже.
Можно ли использовать C++ 11? – kennytm
Не совсем, но если вы знаете решение, почему бы и нет. – aambrozkiewicz
Что вам не нравится в вашей текущей реализации? –