簡體   English   中英

C ++:從模板化方法構造std :: function

[英]C++: Constructing std::function from templated method

所以,我試圖讓這個工作:

#include <iostream>
#include <functional>

using namespace std;

class X {
    public:
    template<typename T>
    void f(T t) {
        cout << t << endl;
    }
};

int main() {
    X xx;
    xx.f(5);
    function<void(int)> ff(&X::f);
    return 0;
}

編譯器抱怨X::f<unresolved overloaded function type> ,這是有道理的。 現在,我的問題是:如何告訴編譯器使用哪些模板參數? 我基本上想要這樣的東西

&X::template<int> f

(相當於對象方法的點模板)。 任何幫助將非常感激。

你需要:

function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);

因為你要求一個非靜態成員函數意味着你需要提供調用函數的實例到std::function 例如: http//ideone.com/dYadxQ

如果你的成員f實際上不需要X來操作,你應該使它成為“自由”非成員函數而不是X的成員函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM