首頁  >  文章  >  後端開發  >  為什麼我無法比較 `std::function` 物件是否相等?

為什麼我無法比較 `std::function` 物件是否相等?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 15:55:03828瀏覽

Why Can't I Compare `std::function` Objects for Equality?

std::function 非相等可比性背後的謎團

std::function 封裝了任意可調用對象,為相等比較提出了獨特的挑戰。實現這種比較需要所有可調用類型的相等可比性,這會給實現者帶來很大的負擔。此外,相同的功能可能會根據不同的參數綁定順序產生不相等的比較。因此,在所有情況下保證等價這一不可能的任務會阻礙相等可比性。

C 11 草案中提到的「類型系統中可能存在的漏洞」可能指的是隱式轉換中固有的歧義。刪除相等運算子並強制明確使用可確保不存在從其呼叫產生的有效程式碼。

與 std::function 不同,std::shared_ptr 有明確定義的相等語意。當兩個指標都為空或都引用同一個物件時,兩個指標精確相等。這種明確定義的行為允許簡單且有意義的相等比較。

以上是為什麼我無法比較 `std::function` 物件是否相等?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn