在C++ 0x中,我想知道什麼類型是lambda函數。具體來說:什麼是lambda函數的類型?
#include<iostream>
type1 foo(int x){
return [x](int y)->int{return x * y;};
}
int main(){
std::cout<<foo(3)(4);//would output 12
type2 bar = foo(5);
std::cout<<bar(6);//would output 30
return 0;
}
我需要用type1/type2替換以獲得上述功能嗎?希望你能看到我想要完成的事情,所以即使這不可能通過直接替換type1和type2來實現,也許你可以引導我朝着正確的方向前進。
換句話說:
- 我怎樣才能得到一個函數返回一個匿名函數?
- 如何爲一個變量分配一個匿名函數?
謝謝!
編輯:我與Visual Studio 2010
謝謝,+1。你的意思是「如果你的lambda函數沒有捕獲任何來自外部範圍的東西,那麼你可以使用函數指針。」?它不是捕獲x? – Cam 2010-07-01 20:29:23
@incrediman是你的例子捕獲,所以你不能使用函數指針,只有無狀態的lambda函數可以轉換爲函數指針。 – 2010-07-01 20:32:27
@snk_kid:哦。我實際上只是誤讀了你寫的東西,它的方式非常有意義:) – Cam 2010-07-01 20:34:32