如何将 boost.lambda 与 boost.thread 一起使用来获取线程的返回值?
How do I use boost.lambda with boost.thread to get the thread's return value?
我正在尝试做这样的事情:
using namespace boost::lambda;
using boost::thread;
int add(int a, int b) {return a+b;}
int sum, x=2, y=6;
thread adder(var(sum) = add(_1, _2), x, y);
adder.join();
cout << sum;
我收到编译错误:
无法将参数 1 从 'boost::arg' 转换为 'int'
你真的很接近! 问题在于,你直接使用 Lambda 的占位符调用 add() — 它不是在 lambda 中被懒惰地计算,而是立即被计算。
这是一个固定版本:
using namespace boost::lambda;
using boost::thread;
int sum, x=2, y=6;
thread adder(var(sum) = _1 + _2, x, y);
adder.join();
cout << sum;
如果你真的想使用add
函数,你会使用bind
:
using namespace boost::lambda;
using boost::thread;
int add(int a, int b) {return a+b;}
int sum, x=2, y=6;
thread adder(var(sum) = bind(add, _1, _2), x, y);
adder.join();
cout << sum;
相关文章:
- Boost Spirit,获取迭代器内部语义动作
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 你如何从 Boost Spirit X3 词法解析器中获取字符串?
- 使用 boost::p roperty_tree::p tree 如何获取特定键的值
- 如何使用C++和Boost Asio从HTTP发布请求中获取键值
- 如何从2d Boost.MultiArray获取子阵列?
- 使用boost库(cpp_int)时获取常量时出错
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 在boost::hana中给定一个键元组,如何从映射中获取值元组
- 使用单独的参数调用"boost::process::system()"时,获取"execv
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 有没有办法使用 Boost 获取区域时间格式?
- 从STD :: String Boost C 获取小时和几分钟
- 如何从Boost获取平台ID
- 如何使用 Boost 获取 POSIX 时区
- 如何使用Boost获取SyntaxError、NameError等的Python错误信息
- 使用boost获取当前时间
- C++-Boost:获取相同的随机数.播种似乎不起作用