Поскольку вы хотите сделать это рекурсивно, вам, вероятно, лучше всего делать несколько совпадений с помощью цикла.
Само Regex плохо подходит для рекурсивного-ничего.
[&(target.first)](float item) {
return std::fabs(item - target.first) < 0.1f;
}
Вы не можете сделать [&(target.first)]
. Даже без круглых скобок вы не можете захватить одну переменную-член как это. Вам нужно использовать записи C ++ 14:
[&first = target.first](float item) {
return std::fabs(item - first) < 0.1f;
}
Или, альтернативно, после вашей второй лямбда, захватите только target
:
[&target](float item) {
return std::fabs(item - target.first) < 0.1f;
}