如何将 boost::bind 与不可复制的参数一起使用,例如 boost::promise?

2024-01-30

某些 C++ 对象没有复制构造函数,但有移动构造函数。 例如,boost::promise。 如何使用它们的移动构造函数绑定这些对象?

#include <boost/thread.hpp>

void fullfil_1(boost::promise<int>& prom, int x)
{
  prom.set_value(x);
}

boost::function<void()> get_functor() 
{
  // boost::promise is not copyable, but movable
  boost::promise<int> pi;

  // compilation error
  boost::function<void()> f_set_one = boost::bind(&fullfil_1, pi, 1);

  // compilation error as well
  boost::function<void()> f_set_one = boost::bind(&fullfil_1, std::move(pi), 1);

  // PS. I know, it is possible to bind a pointer to the object instead of 
  // the object  itself. But it is weird solution, in this case I will have
  // to take cake about lifetime of the object instead of delegating that to
  // boost::bind (by moving object into boost::function object)
  //
  // weird: pi will be destroyed on leaving the scope
  boost::function<void()> f_set_one = boost::bind(&fullfil_1, boost::ref(pi), 1);
  return f_set_one;
}

我不确定如何使用移动构造函数,但另一种方法是使用 boost::ref 创建对对象的可复制引用,然后您可以将它们传递给 boost::bind。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 boost::bind 与不可复制的参数一起使用,例如 boost::promise? 的相关文章

  • Windows 10 Mobile (10.0.14393) 地理围栏后台任务 (LocationTrigger)

    自从10 0 14393 周年纪念更新 LocationTrigger似乎不起作用 我有 Windows Phone 8 1 应用程序 也适用于 UWP 应用程序 输出到的便携式库Windows Runtime Component图书馆 w
  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 类中不允许使用不完整类型,但类模板中允许使用不完整类型

    以下为无效代码 struct foo struct bar bar x error field x has incomplete type struct bar int value 42 int main return foo x valu
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • 使用迭代器的最快(最Pythonic)的方式

    我很好奇使用迭代器最快的方法是什么 也是最 Pythonic 的方法 例如 假设我想创建一个迭代器map内置函数会累积一些东西作为副作用 我实际上并不关心结果map 只是副作用 所以我想以尽可能少的开销或样板来完成迭代 就像是 my set
  • 通过Excel连接Oracle数据库

    我正在尝试从 Excel 工作表连接到我们服务器上的 Oracle 数据库 但无法理解原因 我目前有both32位和64位Oracle 12c安装在不同的位置ORACLE HOME并在我的 64 位计算机上安装了 32 位 Excel 我正
  • Prisma:如何找到与 id 列表匹配的所有元素?

    我将 Prisma 与 NextJs 一起使用 在我的 API 中 我向后端发送与数据库中对象 ID 相对应的数字列表 举个例子 如果我收到列表 1 2 12 我想返回 id 为 1 2 或 12 的对象 这是更复杂的查询的一部分 排序 计
  • Solr:多语言索引和多值字段的 DIH?

    我有一个 MySQL 表 CREATE TABLE documents id INT NOT NULL AUTO INCREMENT language code CHAR 2 tags CHAR 30 text TEXT PRIMARY K
  • WebDriverException:未知错误:Runtime.executionContextCreated 具有无效的“上下文”:初始化 Chrome 浏览器时

    我正在尝试开始使用 selenium 并下载了 chrome 驱动程序并将其放入我的类路径中 我现在只是想获得标题 看看是否可以让它发挥作用 目前代码如下所示 import org openqa selenium WebDriver imp
  • 动态模块什么时候会出现类型加载异常?

    我有一个动态模块 当我的应用程序运行时 它会添加类型 该模块是通过以下代码创建的 var assemblyName new AssemblyName MyAssembly var assemblyBuilder AppDomain Curr
  • 如何在 check 子句中使用 CURDATE()?

    我尝试创建一个表 其中 dateFrom 和 dateTo 字段需要高于今天的日期 所以我这样使用 CHECK CREATE TABLE Booking hotelNo int 10 guestNo int 10 dateFrom date
  • Python,使用多处理进一步加速 cython 函数

    此处显示的代码经过简化 但会触发相同的 PicklingError 我知道关于什么可以腌制和什么不能腌制有很多讨论 但我确实从他们那里找到了解决方案 我编写了一个简单的 cython 脚本 具有以下功能 def pow2 int a ret
  • 如何在xlwings中选择整个工作表

    我在用xlwings 我想复制整个wb1 sheets 1 并粘贴到wb sheets 1 A4细胞 目前我必须设置一个非常大的单元格Z100000 有没有通用的方法来选择整个工作表而不是不安全区域A1 Z10000 import xlwi
  • 使用 AES256 和 Node.js 解密长度超过 15 个字符的输入数据时出错

    我正在使用 Node js 的加密模块和 AES 256 CBC 密码算法编写自己的安全类 但是 当我尝试解密从长度超过 15 个字符的输入数据加密的加密字符串时 失败并出现以下错误 crypto js 153 var ret this h
  • 了解自制程序和仅小桶的依赖关系

    我最近开始使用自制软件 我对当我在我的系统上酿造某些东西时会发生什么感到有点困惑 但它的酿造依赖项是仅桶的 这意味着它们链接在 usr local 例如 我正在安装vips 图像处理库 它的众多依赖项之一是 pixman Pixman 仅作
  • 流程图 x 轴时间问题... AARGHHH

    我很难将数据显示在以 x 轴作为时间线的流程图中 这是我的 JSON 文件的缩写副本 label ServiceReport data 1328983200 53 1328986800 53 1328990400 60 我已按照 Flot
  • Vue 路由器可以在开发服务器上运行,但不能在 vercel vite 上运行

    我正在使用 vite 制作一个项目 该项目使用 vue router 4 它工作得很好 但是当查看 vercel 或 netlify 上的链接时 我收到 404 错误 这是我的 index js 文件 路由器设置 import create
  • group_by 返回重复的键

    Python 3 6 我有一个简单的对象列表 for obj in obj ts print obj address 这告诉我 mwpJCSEEkphA1utQGA2Y9Vx8cufv85CgpR mwpJCSEEkphA1utQGA2Y9
  • JFreeChart:如何使系列不可见?

    我正在尝试使 ohlc 柱形图不可见 以便我可以仅保留移动平均线的窗口 这是两个系列 ohlc 柱和移动平均线 的代码 private static JFreeChart createChart OHLCDataset dataset JF
  • 不同的背景图像和左面板错误

    我使用的是 jQuery mobile 1 4 如果单击左侧面板 我的背景就会消失 我在奥马尔的帮助下解决了这个错误 非常感谢 Aim 主页应该有深色背景 所有其他页面应该有浅色背景 问题一 如果我单击主页上的面板 它就会起作用 如果我转到
  • 如何在React中使用animejs?

    我已经从 npm 安装了animejs 并导入了所需的文件 但是当在我的代码中添加anime code 时 它无法正常工作并显示错误 这是我所做的一个小例子 import React from react import anime from
  • Python message.content 不和谐机器人

    我正在努力让我的discord py当有人发送一些单词时 机器人会自动响应 但问题是该命令仅在该单词是句子中首先写入的情况下才有效 我希望我的机器人能够响应该消息 即使该单词位于某个句子的中间 如果这是可能的 我该怎么做 以下示例将执行您想
  • iOS 支持哪些字体格式?

    我想知道iOS支持哪些字体格式 我已经知道iOS支持TTF格式 它是否支持任何其他功能 例如 PFM 或 PMB 从 iOS 7 开始 支持 TTF 和 OTF 字体格式 您可以在应用程序中或通过配置文件分发这些字体 以使它们在系统范围内可
  • 如何将 boost::bind 与不可复制的参数一起使用,例如 boost::promise?

    某些 C 对象没有复制构造函数 但有移动构造函数 例如 boost promise 如何使用它们的移动构造函数绑定这些对象 include