std::function 是一種通用、多態的函數封裝,它的實例可以對任何可以調用的目標實體進行存儲、復制和調用操作,它也是對 C++中現有的可調用實體的一種類型安全的包裹(相對來說,函數指針的調用不是類型安全的),簡而言之,std::function 就是函數的容器。
在前面的 Lambda 表達式中,我們已經介紹過使用 auto 關鍵字來接受一個 lambda 表達式。但有時候我們可能希望明確的指明這個 lambda 表達式的類型,這時就可以使用 std::function 來進行書寫,例如:
#include<iostream> #include<functional> int foo(int x, int y) { return x+y; } int main() { //function包裝了一個返回值為int,參數為兩個int類型的函數 std::function<int(int,int)> func = foo; std::cout << func(10,20) << std::endl; }
