不能在 `std::generate` 中使用 lambda。我哪里搞砸了?

Can't use lambda inside `std::generate`. Where did I mess up?

我得到以下代码,它应该用给定 n 的二项式系数填充 std::vector<int>(见下文)。 我认为 binomial 函数没有错,因为它做了它应该做的事情。

我收到的错误信息如下:

In file included from /usr/include/c++/9/algorithm:62,
                 from <file>.cpp:3:
/usr/include/c++/9/bits/stl_algo.h: In instantiation of ‘void std::generate(_FIter, _FIter, _Generator) [with _FIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _Generator = int]’:
<file>.cpp:38:57:   required from here
/usr/include/c++/9/bits/stl_algo.h:4469:18: error: ‘__gen’ cannot be used as a function
 4469 |  *__first = __gen();
      |             ~~~~~^~
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

template <typename T>
std::ostream &operator<<(std::ostream &os, const std::vector<T> v)
{
    os << "<";
    std::for_each(v.begin(), v.end(), [&](T x) -> void { os << " " << x << " "; });
    os << ">";
    return os;
}

int main()
{
    int n;
    std::cin >> n;

    int cnt{0};
    std::vector<int> v(n + 1);

    std::function<int(int, int)> binomial = [&binomial](int n, int k) -> int {
        if (k == 0 || k == n)
            return 1;
        if (k == 1)
            return n;
        return (binomial(n - 1, k - 1) + binomial(n - 1, k));
    };

    std::generate(v.begin(), v.end(), binomial(n, cnt++));

    std::cout << v << std::endl;
}

感谢您的帮助!

generate 需要一个不带参数的可调用对象:

std::generate(v.begin(), v.end(), [&]{ return binomial(n, cnt++); });