2012-02-05 35 views
1

雖然定義以下lambda函數錯誤:自動功能的模板聲明

// file prog.hpp 
template<typename T> 
auto function = [](T& v){ return (v+= 2); } 

我得到的錯誤: 錯誤:自動功能的模板聲明

請告訴我應該做

修正

我正在使用g ++ - 4.6.1 -std = C++ 0x -c prog.hpp

+1

你不能模板lambda表達式可以嗎? – 2012-02-05 23:24:29

回答

3

您不能有模板化的lamdba表達式或閉包。你可以做一個模板的傳統功能,或拉姆達工廠(但後者更貴):

template <typename T> T & TheFunction(T & v) { return v += 2; } 

或者:

template <typename T> std::function<T&(T&)> MakeLambda() 
{ 
    return [](T & v) { return v+= 2; } 
} 
+0

感謝您的回答。 – 2012-02-06 02:27:33