定义以下lambda函数时
// file prog.hpp
template<typename T>
auto function = [](T& v){ return (v+= 2); }
我收到错误: 错误:自动功能的模板声明
请告诉我应该做的更正
我正在使用g ++ - 4.6.1 -std = c ++ 0x -c prog.hpp
答案 0 :(得分:3)
您不能拥有模板化的lambda表达式或已关闭。你可以制作一个模板化的传统函数,或者一个lambda工厂(但后者更贵):
template <typename T> T & TheFunction(T & v) { return v += 2; }
或者:
template <typename T> std::function<T&(T&)> MakeLambda()
{
return [](T & v) { return v+= 2; }
}