1. 程式人生 > >C++ lamda表示式當函式引數傳遞

C++ lamda表示式當函式引數傳遞

  1. 模板
    template<typename Fn>explicit
    
    Pormise(QObject *parent, IWorkObj * work, Fn successS)

  2. std:function<>
    explicit Pormise(QObject *parent, IWorkObj * work, std::function<void(QString)> successS);
區別:    用template<class Fn>可以不依賴STL,且是編譯期多型,不過這樣每個匿名函式都會產生一個新的函式例項。而用std::function<>實現多型,可以縮小模版例項化範圍,但是執行時多型。各有利弊。如果是簡單函式,建議前者,寫成inline,複雜函式還是後者好。

參考:https://www.zhihu.com/question/48354089?sort=created