2012-07-05 51 views
0

我已經偶然發現了這個網站:http://www2.research.att.com/~bs/C++0xFAQ.html#lambda他們解釋lambda功能。我曾嘗試使用提供的例子,即:爲什麼std :: generate會與lambda生成器一起使用,而std :: fill不會呢?

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

,同樣

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

雖然,當我嘗試使用帶有填充我不斷收到此錯誤的例子:

錯誤1錯誤C2440:'=':無法從'const '匿名命名空間'::'轉換爲'長'c:\ program files \ microsoft visual studio 10.0 \ vc \ include \ xutility 2692

任何人都知道爲什麼會發生這種情況?在std::fill()的聲明中,沒有仿函數作爲最後一個參數。

+1

我已經發送了Stroustrup先生的一封電子郵件,所以他的網站可能會更新 – MSalters 2012-07-05 14:08:37

回答

4

這是該網站的錯誤。 std::fill需要一個值來填充,而不是可調用的。

+0

感謝您的回答。這是我的想法,但我不確定。 – Patryk 2012-07-05 12:33:57

3

由於std::fill不期望算符作爲最後的參數 - 見the reference

分配給定的值,以在範圍[第一,最後一個)的元素。

它只是期望一個單獨的元素將被分配給指定範圍內的每個項目。

相關問題