错误:自动功能的模板声明

时间:2012-02-05 23:21:32

标签: c++ c++11

定义以下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 个答案:

答案 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; }
}