使用 boost::bind 实现无操作函子
我有一个函数 void get(boost::function
。 我想进行像 get(boost::bind(/* don't know what to put here*/));
这样的调用,而不实现任何其他函数、变量或结构,以便回调什么也不做。 是否可以在C++03中实现这样的“无操作”回调?
使用 boost::bind()
是首选,但不是必需的 - 可能,还有一些其他技巧可以实现我的目标。
I have a function void get(boost::function<void(void)> callback) { callback(); }
.
I want to make a call like get(boost::bind(/* don't know what to put here*/));
without implementing any other functions, variables or structs, so that the callback does nothing.
Is it possible to implement such "no-op" callback in C++03 ?
Usage of boost::bind()
is prefered but not required - may be, there are some other tricks to achieve my goal.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用诸如
boost::bind(std::plus(), 0, 0)
之类的东西,它应该被优化到没有。如果您放宽限制并定义一个无操作函子,那么代码将会更加清晰。
You could use something like
boost::bind(std::plus<int>(), 0, 0)
, which should be optimised away to nothing.It would make the code rather clearer if you relaxed your restriction and defined a no-op functor instead.