可能嗎?指令bool b = (boost::bind(func, 1) == boost::bind(func, 1))
不能編譯,因爲它「無法從'boost :: _ bi :: bind_t'轉換爲'bool'」。 (中func
簽名是void func(int)
)比較Boost.Bind返回的對象?
回答
不知道這是「oficially支持的功能」,但bind_t似乎提供了function_equal
方法:http://www.boost.org/doc/libs/1_47_0/boost/bind/bind.hpp
嘿,這似乎很有前途,非常感謝。我明天會測試這個;我現在很累。 :) –
謝謝你,巴勃羅,它的工作原理。作爲替代,你也可以使用比較成員函數:'boost :: bind(func,1).compare(boost :: bind(func,1))''。 –
Boost.Bind重載返回嵌套關係運算符綁定表達式。因此,在您的代碼boost::bind(func, 1) == boost::bind(func, 1)
中返回一個空(因爲在綁定表達式中沒有佔位符)仿函數,當調用時返回func(1) == func(1)
。這是謂詞一個方便的功能,除其他用途:
typeded std::pair<T, U> pair_type;
// find pair where the first element is equal to 3
std::find_if(begin, end, boost::bind(&pair_type::first, _1) == 3);
此外,返回的對象是無法轉換爲bool
,這就是爲什麼它不會編譯(不考慮這個問題,它並沒有做什麼你要)。
你想要做的不是Boost.Bind接口的一部分。 Tt不會是一個非常有用的功能,在非常普遍的情況下是undecidable。
- 1. Boost.Bind返回類型
- 2. 比較的對象,並返回列表
- 3. PowerShell比較對象,如何從兩個「方」返回對象?
- 4. 比較對象
- 5. 比較對象
- 6. 比較對象
- 7. 比較對象
- 8. 比較返回false
- 9. 如何在比較兩個複雜對象時返回比較差異?
- 10. 對象的比較
- 11. 比較對象對
- 12. Python - 比較2個相同的對象返回False?
- 13. 比較兩個對象,並返回唯一的數據
- 14. 數組元素和對象屬性的比較返回false
- 15. JavaScript比較和返回對象之間的差異
- 16. 不存在的比較列表和返回對象
- 17. C#比較複雜的對象返回差異列表
- 18. 比較使用參數的對象時總是返回錯誤
- 19. Powershell的比較對象返回錯誤結果
- 20. String對象的比較總是返回false
- 21. 比較器的返回值
- 22. 比較對象不會返回正確值
- 23. 無法在swift中比較/返回零對象
- 24. passportjs用戶對象不返回密碼比較密碼
- 25. jquery比較對象
- 26. JUnit,比較對象
- 27. GTEST比較對象
- 28. 比較ImageView對象
- 29. C#對象比較
- 30. 比較空對象
你爲什麼要比較函數指針或類似的東西? –
...因爲我需要......我應該把它當作「不,這不可能」嗎? –
不,我不知道,但我不認爲boost :: bind的返回類型有operator == defined –