功能函數相對於函數的優勢據說是他們的keep a state。 讓我們說在我的問題這不是一個相關的功能。函數或仿函數作爲模板參數? (如果它不需要狀態)
當我定義一個模板化的函數/類時,是否有任何規則來選擇將函數還是函數作爲模板參數會更好?或者我可以基本上做同樣的事情,這也取決於我的口味嗎?
(相關問題:Functor vs template parameters)
編輯:
我的問題是部分答案(用戶端)在這裏:Reason to use this stateless class with a function call operator vs a c style function?
@Antonio:我想你誤解了它。您可以在標準庫的大多數算法中使用函數指針。就像在上面的例子中,沒有任何限制你傳遞一個自由函數,它接受適當的參數並返回'bool'。更重要的是,如果您決定傳遞一個函數指針,那麼它的表現就不會比只考慮函數指針時的表現更好。請注意,在上面的代碼中,'Pred'的要求是* callable *有兩個'Iterator :: value_type',而不是* functor *實現'operator()'... –
謝謝澄清! – Antonio
而且,爲了完全解決我的問題:如果狀態不重要,我的用戶(通常碰巧還是我自己:))應該選擇傳遞函數還是函數,是否有任何特定的原因? – Antonio