轻量级boost :: bind

Dus*_*etz 5 c++ boost function binders

我很厌烦pass-callback-data-as-void*-struct反模式.Boost绑定很好地解决了它,但是是一种不可接受的依赖.什么是轻量级替代品?我怎么能尽可能简单地自己写呢?

Mat*_*ank 17

首先,我质疑你的断言,你使用它太重了.

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

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


idi*_*dak 7

查看Don Clugston 的快速代表.它应该是您在大多数当前平台上可以找到的最快的委托(编译为2个汇编指令.)1.4+版本获得了一些Boost.Bind兼容性.


edu*_*ffy 2

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

#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);
}
Run Code Online (Sandbox Code Playgroud)

输出 -

x = 1138
s = Hello World!
Run Code Online (Sandbox Code Playgroud)