C 14 introduced powerful lambda expressions, prompting some to question the contind relpowerful lambd::expressions, prompting some to question the contin While lambdas offer concise syntax, std::bind maintains its utility in certain scenarios.
Unmovable Captured Variables:
In C 11, lambdas只能捕捉左值變量,而bind允許移動變數。透過bind,可以寫出如下程式碼:
捕捉表達式:
lambda無法直接擷取表達式。相反,bind允許這樣寫:
函數物件重載參數:
在C 14中,lambdas可以透過型別推論解決這一問題,而bind在此場景中依然大放異彩。
無法傳遞參數:
理想情況下,需要使用完美轉發的bind可以寫成類似下面這樣的程式碼:
然而,bind將其阻止為以下形式:
bind的缺點:
儘管如此,bind仍有其優點。它只產生一個函數物件類型,而lambda可能為每個函數產生一個獨特的類型。最終,選擇bind還是lambda取決於具體的使用情境和權衡利弊。
以上是在 C 14 中,什麼時候你應該更喜歡 `std::bind` 而不是 Lambda?的詳細內容。更多資訊請關注PHP中文網其他相關文章!