在定义以下 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 表达式或闭包。您可以制作模板化的传统函数或 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; }
}
关于c++ - 错误 :template declaration of auto function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154039/