首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轻量级boost::bind

轻量级boost::bind
EN

Stack Overflow用户
提问于 2008-12-19 15:49:51
回答 7查看 4.7K关注 0票数 5

我受够了pass-callback-data-as-void*-struct反模式。Boost bind很好地解决了这个问题,但这是一个不可接受的依赖。什么是轻量级的替代方案?我怎么才能自己写得尽可能简单呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2008-12-19 16:13:29

我不熟悉boost:bind,但它是这样的吗?

代码语言:javascript
复制
#include <iostream>

void foo (int const& x) {
    std::cout << "x = " << x << std::endl;
}

void bar (std::string const& s) {
    std::cout << "s = " << s << std::endl;
}

template<class T>
void relay (void (*f)(T const&), T const& a) {
    f(a);
}

int main (int argc, char *argv[])
{
    std::string msg("Hello World!");
    relay (foo, 1138);
    relay (bar, msg);
}

输出--

代码语言:javascript
复制
x = 1138
s = Hello World!
票数 2
EN

Stack Overflow用户

发布于 2008-12-19 16:21:07

首先,我质疑您的断言,即它对您来说太重了,无法使用。

其次,如果您需要控制行为,请滚动您自己的模板。

第三,如果您害怕滚动自己的模板,我怀疑您判断boost::bind太重而无法使用的能力。

票数 17
EN

Stack Overflow用户

发布于 2008-12-19 19:54:47

看看Don Clugston的fast delegate吧。它被认为是你能在大多数当前平台上找到的最快的委托(编译成2条汇编指令)。Version 1.4+获得了一些Boost.Bind兼容性。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/381363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档