C++ C++;:从模板化方法构造std::函数
所以,我试着让它工作:C++ C++;:从模板化方法构造std::函数,c++,templates,c++11,std,std-function,C++,Templates,C++11,Std,Std Function,所以,我试着让它工作: #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); f
#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;
}
(相当于对象方法的点模板)。任何帮助都将不胜感激 您需要:
function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);
函数ff(&X::f)
ff(xx,5);
因为您请求了一个非静态成员函数,这意味着您需要提供调用函数的实例,以std::function
。例如:
如果您的成员
f
实际上不需要X
来操作,您应该将其设置为“免费”非成员函数,而不是X
的成员函数,您可以使用std::bind
或lambda来匹配签名函数。
function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);