问题标签 [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.
c++ - 令牌解析器语义动作
我已经根据Spirit lex 示例 4中显示的代码编写了一个工作令牌解析器
我的一条规则看起来像这样
这很好用。当出现
它按我的预期输出
将名称语句设置为:xyz
现在我想做一些有用的事情,将找到的名称存储到一个类中。从解析器语义示例工作,我编写了这段代码
这不编译
为什么编译器抱怨试图从 bool 转换为 string?我看不到布尔值。
c++ - 将函数绑定到范围以生成迭代函数
我正在尝试实现自己的bind_range
可以绑定范围的方法。它应该允许这样的客户端代码:
在上面的代码中,我的模板化bind_range
检测到v1
符合ForwardRangeConcept<>
并且其值类型与f()
的第一个参数兼容。然后它生成一个函数对象,该函数对象将遍历v1
,调用f()
每个值。
我知道上述可以通过调用代码中的某种形式的 for-each 构造来实现,但我想采用绑定函数并在以后使用它。
以上是我想要实现的本质。我已经阅读了我的C++ 模板元编程副本并查看了boost::bind
实现,但我无法开始使用解决方案。我也有一种挥之不去的感觉,像这样的东西已经存在于 Boost 库的某个地方。
扩展:
绑定多个范围。 例如:
处理返回类型。 我不需要迭代调用的返回类型,但可以想象有人可能想要存储或处理每个返回值。我确信这可以通过某种 Lamda 类型的构造巧妙地完成。
c++ - 存储完整的通用函数调用以供以后播放?
目前,我正在通过下面介绍的函数MyClass::Enable存储函数调用。从某种意义上说,它是通用的,我稍后可以通过循环遍历commanList在消费者线程上回放该函数,而不必提供任何函数参数。
然而,通过快速性能检查,与使用函数查找表(这会破坏通用部分)并存储函数参数以及函数查找位置相比,此方法完成存储函数所需的处理时间要长 2 倍。(如果这没有意义,请道歉:它本质上是一个功能记录器)。
是否有更性能友好的 std::tr1::bind [boost::bind] 版本,或者是否有更好的方法以通用方式记录函数调用并稍后播放?
c++ - 删除 boost::bind 的原始指针参数
假设我分配了堆A*
,我想将其作为参数传递给boost::bind
.
boost::bind
保存在一些 STL 中以供以后处理,例如boost::functions
's 的容器。
我想确保A*
将在销毁 STL 容器时被销毁。
演示:
如何做呢?
编辑
也许我想要的不是那么现实。
我有原始指针和接收原始指针的函数。调用通过boost::bind延迟。在这一点上,我想要自动内存管理,以防 boost::bind 想要执行。我很懒,所以我想使用“准备好的”智能指针解决方案。
std::auto_ptr看起来是一个不错的候选者,但是......
不编译(见这里)
pAutoA 被破坏,删除底层 pA。
编辑 02
在提到的容器中,我需要存储带有不同参数的杂项“回调”。其中一些是指向对象的原始指针。由于代码很旧,我并不总是可以更改它。
为在容器中存储回调编写自己的包装器是最后的手段(虽然可能是唯一的),因此是赏金。
c++ - 识别 boost::shared_ptr 中的对象
我正在基于 boost 网站上的示例构建应用程序。这些是需要了解的相关定义:
连接是一个类。
在其中一个文件connection_manager.cpp中,他们这样做:
现在,由于我的程序结构,我想在单独的线程中启动每个新连接。所以我根据以下内容修改了上述内容:
我的问题,因此这个问题,是当我只想这些 connection_ 对象之一。在前面提供的链接中,他们这样做:
但正如上面的评论所暗示的,我如何在所有线程中找到 c 并仅停止该线程。我想为该线程调用 join() 函数。
更新:
我认为这实际上是我真正想要的!所以我将我的变量声明为
但是,我如何创建一个新的胎面,就像以前一样?像:
但是下一步是什么?很抱歉感到困惑...... :-)
c++ - std::foreach 与 boost::bind
这有什么问题:
它编译得很好,但不起作用。
c++ - boost::bind() 是按引用还是按值复制参数?
为什么 valgrind 的 DRD 工具会抱怨“线程负载冲突……大小为 4”:关于这样的代码:
boost::bind() 是按引用还是按值存储值?
c++ - boost::bind 的返回类型是什么?
我想将函数的“绑定器”保存到变量中,以便通过利用其运算符重载设施在以下代码中重复使用它。这是实际执行我想要的代码:
困扰我的当然是这行:
我只是通过故意犯类型错误并分析错误消息来获得类型。这当然不是一个好方法。有没有办法获得“bindGetN”的类型?或者,也许有不同的方法来产生类似的功能?
编辑:我忘了提到,可以说,function
在这种情况下使用的“标准”建议不起作用——因为我想让我的运算符重载。
c++ - 是否可以创建指向函数的“新”运算符/构造函数的函数指针?
如果我想参数化创建一个对象,我当然可以创建一个函数,在特定类上调用 new 并传递一个指针。我想知道是否可以跳过该步骤并将函数指针传递给new
运算符本身。
c++ - 为什么 std::bind1st 可能被认为“几乎无法使用”?
在关于 的对话中boost::bind
,有人注意到它std::bind1st
存在于 C++03 中,但它“几乎无法使用”。
我找不到任何可靠的东西来支持这一点。
boost::bind是标准函数std::bind1st和 std::bind2nd的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。bind对函数对象没有任何要求;特别是,它不需要 result_type、first_argument_type和 second_argument_type标准类型定义。
也许暗示这些限制确实适用于std::bind1st
.
除了对参数数量的明显限制之外, to /的优点是什么?在 C++03 中“几乎不可用”的断言有什么优点吗?boost::bind
std::bind1st
std::bind2nd
std::bind1st