1

我偶然发现了这个网站:http ://www2.research.att.com/~bs/C++0xFAQ.html#lambda在那里他们解释了lambda 函数。我尝试使用提供的示例,即:

    vector<int> indices( notImportantNumber );
    int count = 0;
    fill(indices.begin(), indices.end(), [&](){ return ++count; });

同样地

    generate(indices.begin(), indices.end(), [&](){ return ++count; });

虽然,当我尝试使用带有填充的示例时,我不断收到此错误:

错误 1 ​​错误 C2440:'=':无法从 'const `anonymous-namespace'::' 转换为 'long' c:\program files\microsoft visual studio 10.0\vc\include\xutility 2692

任何人都知道为什么会这样?在声明中std::fill()没有函子作为最后一个参数。

4

2 回答 2

5

这是那个网站上的错误。std::fill需要一个值来填充,而不是可调用的。

于 2012-07-05T12:33:00.467 回答
3

因为std::fill不期望函子作为最后一个参数 - 请参阅参考资料

将给定值分配给范围 [first, last) 中的元素。

它只期望将一个元素分配给指定范围内的每个项目。

于 2012-07-05T12:33:30.820 回答