一段有关std:function函数指针代码编译错误

richard_ma 2013-07-16 01:07:07
代码如下

#include <functional>
template <class HContext>
std::function<void(int)> task_wrapper(std::function<void(int)> f, HContext c) {
std::function<void(int)> f2 = [&](int i)->void {
hsl_before_execute(c);
f(i);
hsl_after_execute(c);
};
return f2;
}


报错信息如下

hsl_temp.h: In function ‘std::function<void(int)> task_wrapper(std::function<void(int)>, HContext)’:
hsl_temp.h:103: error: expected primary-expression before ‘[’ token
hsl_temp.h:103: error: expected primary-expression before ‘]’ token
hsl_temp.h:103: error: expected primary-expression before ‘int’
hsl_temp.h:103: error: expected unqualified-id before ‘void’
hsl_temp.h:103: error: expected ‘,’ or ‘;’ before ‘void’


编译环境是Gcc/G++ 4.4
boost版本1.43.0
libstdc++版本4.4

想问问这些错误的解决方法,还有就是这一句的[&]是什么用法?
std::function<void(int)> f2 = [&](int i)->void {

这个void后面的我感觉是个函数定义,但函数没有名字,是不是匿名函数呢?求详解。
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
richard_ma 2013-07-16
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
这是 lambda表达式 GCC4.5 才支持,升级GCC版本吧
多谢
  • 打赏
  • 举报
回复
这是 lambda表达式 GCC4.5 才支持,升级GCC版本吧

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧