C ++ 14 Общих лямбд - это очень крутой способ генерировать функтор с operator ()
, который выглядит следующим образом:
template <class T, class U>
auto operator()(T t, U u) const;
Но не так:
template <class T>
auto operator()(T t1, T t2) const; // Same type please
Не так:
template <class T, std::size_t N>
auto operator()(std::array<T, N> const &) const; // Only `std::array` please
Не так (хотя это немного сложно на самом деле использовать):
template <class T>
auto operator()() const; // No deduction
Лямбды C ++ 14 хороши, но C ++ 20 позволяет нам реализовать эти случаи без хлопот.