2011-10-24 118 views
1

实现无操作仿函数我有一个函数void get(boost::function<void(void)> callback) { callback(); }。 我想拨打电话get(boost::bind(/* don't know what to put here*/));而不实施任何其他功能,变量或结构,以免回调无效。 是否有可能在C++ 03中实现这样的“no-op”回调?使用boost :: bind

boost::bind()的使用是首选但不是必需的 - 也许,还有其他一些技巧来实现我的目标。

+3

为什么不只是使用no-op函数,即'void noop(){}'? –

+0

@JoachimPileborg,因为那意味着实现一个OP明确希望避免的函数。 – avakar

+2

...或在酷的C + + 11:'[](){}' –

回答

4

可能使用类似boost::bind(std::plus<int>(), 0, 0),这应该被优化到没有。

如果你放宽了限制并定义了一个无操作函子,它会使代码更加清晰。

+0

+1,但你缺少一对括号。 – avakar

+0

@avakar:谢谢,现在修复。 –

+0

函数是否隐式转换为函数? –