错误:auto函数的模板声明

error:template declaration of auto function

本文关键字:声明 函数 auto 错误      更新时间:2023-10-16

在定义以下lambda函数时

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

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

请告诉更正我应该做

我使用的是g++-4.6.1-std=c++0x-c程序.hpp

不能有模板化的lamdba表达式或闭包。您可以创建一个模板化的传统函数,也可以创建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; }
}