Я новичок в C++, недавно появившемся от Swift. Есть ли способ получить более короткий лямбда-синтаксис?C++ более короткий синтаксис лямбда
У меня есть много линий, как:
columns = {
Col(_("Name"), "string", [] (Person *p) {
return p->Name();
}),
Col(_("Age"), "int", [] (Person *p) {
return p->Age();
}),
Col(_("Bank"), "string", [&banks] (Person *p) {
return banks.lookUp(p->Identifier()).Name;
}),
//..etc..
};
Некоторые из колонок требуют более лямбды, но как это синтаксис для написания лямбда составляет около тех пор, пока содержание это сам.
Можно ли вообще уменьшить синтаксис лямбда? (Скажем, с помощью неявного аргумента или неявно возвращает последнее заявление)
Например, в Swift я мог бы сделать что-то вроде этого, и это было бы то же самое:
Col(_("Age"), "int", { $0.Age() }),
EDIT: Добавлен столбец банка в качестве примера более сложный.
Если вы используете одну и ту же лямбду снова и снова, вы можете сохранить ее в переменной, а затем использовать переменную вместо лямбда. – NathanOliver
_ «Может ли синтаксис лямбда вообще быть уменьшен?» _ Ну, спросите [ISO C++ commitee] (https://isocpp.org/std/the-committee). –
@NathanOliver, я знаю, но они не такие же лямбда? –