我偶然发现了这个网站: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'::'to'long'c:\ program files \ microsoft visual studio 10.0 \ vc \ include \ xutility 2692
任何人都知道为什么会这样?在std::fill()
的声明中,没有函子作为最后一个参数。
答案 0 :(得分:4)
该网站上的错误。 std::fill
需要填充值,而不是可调用。
答案 1 :(得分:3)
由于std::fill
不期望将functor作为最后一个参数,因此请参阅the reference
将给定值分配给[first,last]范围内的元素。
它只需要将一个元素分配给指定范围内的每个项目。