2
爲什麼我們需要std::invoke
,當我們已經有std::function
?他們有什麼區別?兩者都用於調用可調用對象。添加新模板有什麼意義?std :: invoke和std :: function有什麼區別?
爲什麼我們需要std::invoke
,當我們已經有std::function
?他們有什麼區別?兩者都用於調用可調用對象。添加新模板有什麼意義?std :: invoke和std :: function有什麼區別?
std::invoke
是激活任何調用一個通用的方法 - 一個std::function
,函數指針,指針成員函數,函數對象等,而不必知道你正在處理哪一個(而不必使用不同的語法)。它在通用編程(模板)中非常有用。
另一方面,標準函數是可調用「事物」的通用容器。完全不一樣。
我們已經有一輛車。爲什麼我們需要綠色的顏色? (簡而言之,這兩個東西** **類似** ???) – Yakk
'std :: invoke'和'std :: function'根本不會做同樣的事情 – David
看這個[cppcon 2015 talk通過Stephan T. Lavavej](https://www.youtube.com/watch?v=zt7ThwVfap0) – NathanOliver