c++11:如何判斷std::function對象相同?

我們知道std::function的實質就是個函數指針,但在c++11中std::function並沒有實現操作符==(要到C++20才實現),所以我們無法使用==操作符來判斷兩個std::function對象是否相等,雖然我們明明知道它就是個指針。

但我還是要判斷啊,怎麼辦?
仔細研究了std::function的定義,找到了這個 target()函數,c++11標準的官方定義就是返回函數指針,既然它返回了函數指針,自然就可以用==來比較地址是否相等了

std::function<void(const std::string &)> f1;
std::function<void(const std::string &)> f2;
bool eq = f1.target<void(*)(const std::string &)>() == f2.target<void(*)(const std::string &)>()

target函數說明:
https://en.cppreference.com/w/cpp/utility/functional/function/target

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章