boost-bind相关内容
我最近在使用提升时遇到了程式码中的错误:: bind 。 从boost :: bind文档: 绑定的参数被复制并由返回的函数对象内部保存。 我假设正在持有的副本是基于函数的签名。但是,它实际上是基于传递的值的类型。 在我的情况下,发生隐式转换,将绑定表达式中使用的类型转换为类型由函数接收。我期望这种转换发生在绑定的网站,但它发生时,使用的结果函数对象。 回想起来,
..
我的应用程序有一个类似于以下代码的部分 void SomeClass :: OtherMethod(std :: vector& :string>& g) { g.pushback(“Something”); } void SomeClass :: SomeMethod() { std :: vector v; boost :: thr
..
我刚刚发现自己创建了一个类 template 到不同的重复调用 invoker :: operator()(foo&) $ c> foo 的实例,让它转发这些调用到 foo
..
有没有方法可以部分地绑定可调用对象(例如函数)的第一个/最后一个参数,而不明确指定其余的参数? std :: bind()似乎要求全部绑定,那些要留下的应绑定到 std :: placeholders :: _ 1 , _2 , _3 等。 可以写一个 bind_first() / bind_last()用于从第一个/最后一个参数开始的部分绑定,并自动在其原始位置以原始顺序插入任何剩余
..
请考虑以下示例。 #include #include #include void func(int e,int x){ std :: cerr
..
我注意到,当传递引用参数到boost绑定时,这些参数将不会像引用一样。相反,boost会创建成员的另一个副本,并且在变量中传递的原始值保持不变。 当我改变指针的引用时,一切正常。 我的问题是: 是否可以获取引用的工作,或者至少在尝试使用引用参数时给出编译错误? 解决方案 bind的文档建议您可以使用boost :: ref和boost :: cref。
..
请查看Johannes Schaub发布的此示例,以对一对向量进行排序: 如何根据第二个元素是什么? std :: sort(a.begin(),a.end ), boost :: bind(& std :: pair :: second,_1)
..
我创建了一堆函数,它们都有效地做同样的事情: long Foo :: check retValue,unsigned toCheck,const std :: set& s) { auto it = s.find(toCheck); return(it == s.end())? -retValue:retValue; } 其中Foo是一个类
..
我有一些很基本的测试代码。我有一个类,只记录所有的操作。我将它绑定到 boost :: function 对象,如下所示: void Function(const Foo&) { printf(“Function invoked \\\ ”); } // ... boost :: function func; { Foo f; pr
..
我写了一些代码,害怕它不会工作 - 所以我写了一个原型: #include #include #include class base { private: boost :: function行动; protected: virtual
..
我可能有一个很尴尬的简单问题:在类中传递和调用成员函数。我知道我想使用BOOST绑定(和或函数),但我还没有真正把握它的概念。 下面的代码编译和执行与问题。但是当我想将“f3”函数改为非静态类函数时,有趣的开始: #include #include #include #include
..
最近我发现 shared_ptr 没有指向成员运算符 - > * 的指针。我创建了一个简单的例子: template auto invoke1(Pointer p,Function f,Args ... args) - > decltype((p-> * f)(args ...
..
我一直认为函数指针不需要和号: 函数指针需要一个&符号 然而,我看到的每个例子使用 boost :: bind 显示一个,而且在大多数情况下,我的编译器如果省略它,会给出一个通常不可更改的错误消息。 同步(boost :: bind(& Device :: asyncUpdate,this,“ErrorMessage”)); //工作 同步(boost :: bind(Dev
..
有很多关于使用占位符的SO的例子,但我仍然有点困惑,如果有人可以解释以下两个语句之间的区别,将非常感谢。 void SomeMethod(int a) { std :: cout
..
我想为我的游戏写一个事件系统。我的事件管理器将存储的回调可以是普通函数以及函子。我还需要能够比较函数/函子,所以我知道哪一个我需要断开与事件管理器。 •最初我尝试使用boost :: function;它完美地处理函数和函数,除非它没有操作符==,所以如果我想,我不能删除回调。 class EventManager { typedef boost :: function
..
我想使用成员函数指针调用虚函数的基类实现。 class Base { public: virtual void func(){cout
..
我想将一个函数的“binder”保存到一个变量中,通过利用它的操作符重载设施在下面的代码中重复使用它。这里是实际做我想要的代码: #include #include #include #include class X { int n; public: X(i
..
我作出(C ++)应用程序,它是一个WebSocket的客户端和服务器的WebSocket。为了能够,我使用的库websocketpp做到这一点。为了使应用程序既是客户机和服务器,我想在 endpoint1.run()和 endpoint2.listen(口)是多线程。这是不顺心的事。 一般情况下(单线程)我使用: endpoint.listen(口); 其中工程 要使它成为多线程的使用:
..
是否有可能访问包含在一个boost ::函数类型的参数? 我希望能够获取函数的地址被调用,并提供该功能的参数值。 解决方案 提振::函数擦除实现类型,但如果你知道它,你可以施放它;因为升压::功能是按值(==!=)的信息显然是可比较的。 它看起来像(从功能N的function_base超类),你可以得到实施的对象与 f.target< concrete_functor_typ
..
有人能告诉我为什么这个不能编译?我基本上是从一个例子复制它由Kholkoff(http://lists.boost.org/Archives/boost/2007/04/120339.php),早在2007年,大约读()的插座与超时: 无效CClient ::的setResult(升压::可选<提高::系统::错误_ code> *
..