一段有关std:function函数指针代码编译错误
代码如下
报错信息如下
编译环境是Gcc/G++ 4.4
boost版本1.43.0
libstdc++版本4.4
想问问这些错误的解决方法,还有就是这一句的[&]是什么用法?
std::function<void(int)> f2 = [&](int i)->void {
这个void后面的我感觉是个函数定义,但函数没有名字,是不是匿名函数呢?求详解。
#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后面的我感觉是个函数定义,但函数没有名字,是不是匿名函数呢?求详解。
...全文
相关推荐
理解C++编程中的std::function函数封装
在C++中,使用函数指针时,需要确保函数指针与目标函数的类型匹配,否则会导致编译错误。
C++ 一般(普通)函数指针、类成员函数指针,用法区别,以及强制转换
在大多数情况下,你应该尽量避免直接进行这种转换,而是考虑使用其他设计模式,如回调函数、函数对象或者std::function。
C++ STL 内 std::{bind/tuple/function} 简单实现
需要注意的是,虽然上述代码给出了一个基本的实现框架,但实际的STL实现会更加复杂,涉及到更多的边界条件处理、优化和错误检查。
彻底了解指针数组,数组指针以及函数指针
" << std::endl; return 0; }int b() { std::cout << "this is in function b" << std::endl; return 0; }void
C++函数指针
函数指针的类型匹配为了正确地使用函数指针,必须确保函数指针的类型与其所指向的函数的类型完全一致,包括返回类型和参数类型。如果类型不匹配,则会导致编译错误或运行时错误。


