Комментарии 6
Интересная идея. Могу предположить, что она будет работать и для случая:
если c2 имеет тип int, но не соберется если тип c2 будет, скажем long long.
auto mutable_lambda = [&counter, &c2](int value) mutable {
++counter;
return value * counter + c2;
};
если c2 имеет тип int, но не соберется если тип c2 будет, скажем long long.
Точно, в трех соснах запутался. Попутно нашел сравнительно честный способ выстрела в ногу:
По хорошему, такое безобразие не должно компилироваться.
auto just_for_fun()
{
int mcnt = 3;
auto const_lambda = [mcnt](int value)
{
return value + mcnt;
};
return make_closure_erasure(const_lambda);
}
По хорошему, такое безобразие не должно компилироваться.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Использование лямбда-выражений в необобщённом коде C++