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
雖然定義以下lambda函數錯誤:自動功能的模板聲明
// file prog.hpp
template<typename T>
auto function = [](T& v){ return (v+= 2); }
我得到的錯誤: 錯誤:自動功能的模板聲明
請告訴我應該做
修正我正在使用g ++ - 4.6.1 -std = C++ 0x -c prog.hpp
您不能有模板化的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; }
}
感謝您的回答。 – 2012-02-06 02:27:33
你不能模板lambda表達式可以嗎? – 2012-02-05 23:24:29