使用生成填充模板 class c++ 中的列表

Using generate to fill list in template class c++

我正在做一个项目,我有一个模板 class,其中有一个列表。我包含的这个函数是为了用随机数填充列表。但是每次我 运行 它都说 "term does not evaluate to a function taking 0 arguments" 而我所理解的是我不能使用 returns 生成中的值的函数。

如何将 Generator 和 Random 转换为仿函数?有没有办法做到这一点?

template<typename T>
void ListManipulator<T>::fillList()
{
    std::uniform_real_distribution<double> random(1000, 2000);
    std::default_random_engine generator(static_cast<unsigned>(std::time(0)));

    std::generate(theList.begin(), theList.end(), random(generator));

尝试以下操作:

std::uniform_real_distribution<double> random(1000, 2000);
std::default_random_engine generator(static_cast<unsigned>(std::time(0)));

std::generate(theList.begin(), theList.end(), 
    [&random, &generator]{ return random(generator); });

std::generate 需要一个生成器,它是一个带有签名的函数:

Ret fun();

而且您提供的根本不是功能,而是 double 值。