c++ - 错误 :template declaration of auto function

标签 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

最佳答案

你不能有模板化的 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/

相关文章:

C++11:根据容器的 value_type 专门化/限制方法

c++ - 删除字符串流中的最后一个字符?

c++ - 如何传递 std::unique_ptr ?

c++ - 当我使用非 cst 内存模型时,为什么我的自旋锁实现性能最差?

c++ - binary64 的 15-17 位有效小数位?

c++ - boost spirit 适合这种情况吗?

c++ - 在 C++ 中将特殊 ASCII 字符转换为 XML 兼容字符串

c++ - 线程安全的 TBB::concurrent_hash_map 删除

c++ - recv 读取不完整的数据包

c++ - 安装 POD