问题标签 [boost-bind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
428 浏览

c++ - 令牌解析器语义动作

我已经根据Spirit lex 示例 4中显示的代码编写了一个工作令牌解析器

我的一条规则看起来像这样

这很好用。当出现

它按我的预期输出

将名称语句设置为:xyz

现在我想做一些有用的事情,将找到的名称存储到一个类中。从解析器语义示例工作,我编写了这段代码

这不编译

为什么编译器抱怨试图从 bool 转换为 string?我看不到布尔值。

0 投票
3 回答
262 浏览

c++ - 将函数绑定到范围以生成迭代函数

我正在尝试实现自己的bind_range可以绑定范围的方法。它应该允许这样的客户端代码:

在上面的代码中,我的模板化bind_range检测到v1符合ForwardRangeConcept<>并且其值类型与f()的第一个参数兼容。然后它生成一个函数对象,该函数对象将遍历v1,调用f()每个值。

我知道上述可以通过调用代码中的某种形式的 for-each 构造来实现,但我想采用绑定函数并在以后使用它。

以上是我想要实现的本质。我已经阅读了我的C++ 模板元编程副本并查看了boost::bind实现,但我无法开始使用解决方案。我也有一种挥之不去的感觉,像这样的东西已经存在于 Boost 库的某个地方。

扩展:

绑定多个范围。 例如:

处理返回类型。 我不需要迭代调用的返回类型,但可以想象有人可能想要存储或处理每个返回值。我确信这可以通过某种 Lamda 类型的构造巧妙地完成。

0 投票
0 回答
387 浏览

c++ - 存储完整的通用函数调用以供以后播放?

目前,我正在通过下面介绍的函数MyClass::Enable存储函数调用。从某种意义上说,它是通用的,我稍后可以通过循环遍历commanList在消费者线程上回放该函数,而不必提供任何函数参数。

然而,通过快速性能检查,与使用函数查找表(这会破坏通用部分)并存储函数参数以及函数查找位置相比,此方法完成存储函数所需的处理时间要长 2 倍。(如果这没有意义,请道歉:它本质上是一个功能记录器)。

是否有更性能友好的 std::tr1::bind [boost::bind] 版本,或者是否有更好的方法以通用方式记录函数调用并稍后播放?

0 投票
4 回答
1288 浏览

c++ - 删除 boost::bind 的原始指针参数

假设我分配了堆A*,我想将其作为参数传递给boost::bind. boost::bind保存在一些 STL 中以供以后处理,例如boost::functions's 的容器。

我想确保A*将在销毁 STL 容器时被销毁。

演示:

如何做呢?

编辑

也许我想要的不是那么现实。

我有原始指针和接收原始指针的函数。调用通过boost::bind延迟。在这一点上,我想要自动内存管理,以防 boost::bind 想要执行。我很懒,所以我想使用“准备好的”智能指针解决方案。

std::auto_ptr看起来是一个不错的候选者,但是......

不编译(见这里

pAutoA 被破坏,删除底层 pA。

编辑 02

在提到的容器中,我需要存储带有不同参数的杂项“回调”。其中一些是指向对象的原始指针。由于代码很旧,我并不总是可以更改它。

为在容器中存储回调编写自己的包装器是最后的手段(虽然可能是唯一的),因此是赏金。

0 投票
2 回答
1369 浏览

c++ - 识别 boost::shared_ptr 中的对象

我正在基于 boost 网站上的示例构建应用程序。这些是需要了解的相关定义:

连接是一个类。

在其中一个文件connection_manager.cpp中,他们这样做:

现在,由于我的程序结构,我想在单独的线程中启动每个新连接。所以我根据以下内容修改了上述内容:

我的问题,因此这个问题,是当我只想这些 connection_ 对象之一。在前面提供的链接中,他们这样做:

但正如上面的评论所暗示的,我如何在所有线程中找到 c 并仅停止该线程。我想为该线程调用 join() 函数。


更新:

我认为这实际上是我真正想要的!所以我将我的变量声明为

但是,我如何创建一个新的胎面,就像以前一样?像:

但是下一步是什么?很抱歉感到困惑...... :-)

0 投票
3 回答
2377 浏览

c++ - std::foreach 与 boost::bind

这有什么问题:

它编译得很好,但不起作用。

0 投票
1 回答
5970 浏览

c++ - boost::bind() 是按引用还是按值复制参数?

为什么 valgrind 的 DRD 工具会抱怨“线程负载冲突……大小为 4”:关于这样的代码:

boost::bind() 是按引用还是按值存储值?

0 投票
1 回答
9502 浏览

c++ - boost::bind 的返回类型是什么?

我想将函数的“绑定器”保存到变量中,以便通过利用其运算符重载设施在以下代码中重复使用它。这是实际执行我想要的代码:

困扰我的当然是这行:

我只是通过故意犯类型错误并分析错误消息来获得类型。这当然不是一个好方法。有没有办法获得“bindGetN”的类型?或者,也许有不同的方法来产生类似的功能?

编辑:我忘了提到,可以说,function在这种情况下使用的“标准”建议不起作用——因为我想让我的运算符重载。

0 投票
2 回答
1280 浏览

c++ - 是否可以创建指向函数的“新”运算符/构造函数的函数指针?

如果我想参数化创建一个对象,我当然可以创建一个函数,在特定类上调用 new 并传递一个指针。我想知道是否可以跳过该步骤并将函数指针传递给new运算符本身。

0 投票
2 回答
1462 浏览

c++ - 为什么 std::bind1st 可能被认为“几乎无法使用”?

在关于 的对话中boost::bind,有人注意到它std::bind1st存在于 C++03 中,但它“几乎无法使用”。

我找不到任何可靠的东西来支持这一点。

boost::bind文档

boost::bind是标准函数std::bind1ststd::bind2nd的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。bind对函数对象没有任何要求;特别是,它不需要 result_typefirst_argument_typesecond_argument_type标准类型定义。

也许暗示这些限制确实适用于std::bind1st.

除了对参数数量的明显限制之外, to /优点是什么?在 C++03 中“几乎不可用”的断言有什么优点吗?boost::bindstd::bind1ststd::bind2ndstd::bind1st