, , , .
- , lambda
, ++ 14, init - :
auto l = [internalState = true] {};
,
?
auto l1 = [rintptr = new int] {
delete rintptr;
};
auto l2 = [uptr = std::make_unique<int>()] {
};
, . . , RAII, .
, . , , .
- , , : :
auto l = []{
return []{};
}();
, lambda
std::function. .
std::function<void()> func;
{
func = []{};
}
, std::function . , SBO, , , .
trueOrFalse , ,
, . , , . , .
, , , else, . Capture private .
, . , .
()
:
auto overloaded = [](const auto& val) {
std::cout << val << std::endl;
};
overloaded(4);
overloaded(6.8);
overloaded("test");
, lambdas, :
template<typename... Ls>
struct overload : Ls... {
explicit overload(Ls... ls) noexcept : Ls{std::move(ls)}... {}
using Ls::operator()...;
};
lambdas:
auto o = overload(
[]{},
[i = 0](int) {},
[&](double) {}
);
.
++ 14, overload .
, constexpr:
constexpr void foo() {
[]{}();
}
struct MyFunctor {
constexpr MyFunctor() = default;
constexpr void operator()(){}
};
constexpr void bar() {
MyFunctor{}();
}
, ++ 17. Lambdas constexpr.
, - , .
auto lambda = [](auto someVec) {
using T = typename decltype(someVec)::value_type;
};
++ 2a :
auto lambda = []<typename T>(std::vector<T> someVec) {
};