std::mem_fn
mem_fn: 把成员函数转为函数对象,调用mem_fn时,可以使用对象引用,指针,智能指针
#include <iostream>
#include <functional>
#include <memory>
class test{
public:
test()=default;
test(int value):value(value){}
virtual ~test()=default;
int print(){ return value*value;}
private:
int value;
};
/*
mem_fn: 把成员函数转为函数对象,调用mem_fn时,可以使用对象引用,指针,智能指针
*/
int main()
{
test t1(99);
/*智能指针*/
std::shared_ptr<test> p1(new test(99));
std::cout<<"value:"<<t1.print()<<std::endl;
auto print = std::mem_fn(&test::print);
std::cout<<"value:"<<print(t1)<<std::endl;
std::cout<<"shared_ptr value:"<<print(p1)<<std::endl; /*调用智能指针*/
return 0;
}