Работаю с QAbstractItemModel, и приходится делать примерно такое.
• Проверка 1 не прошла → return QVariant().
• Проверка 2 не прошла → return QVariant().
Все проверки прошли — выводим некую информацию.
Решил это дело переписать на лямбды.
Упростим задачу.
struct Entry {
float lo, hi;
};
class GetData {
public:
virtual QVariant get(const Entry& en) const = 0;
};
QVariant GetLo : public GetData {
public:
QVariant get(const Entry& en) const override { return en.lo; }
static const GetLo INSTANCE;
}
QVariant entryToVar(const Entry* en, const GetData& getData) {
if (en == nullptr) return QVariant();
return getData.get(*en);
}
…
QVariant vLo = entryToVar(pEntry, GetLo::INSTANCE);
Как всё это переписать на лямбды? Какой параметр ставить вместо const GetData& getData?
Если делать шаблонную, при каких условиях шаблонная расшаблонится в одно и то же?