2011-10-24 157 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

函數是否隱式轉換爲函數? –