标签:rip 对象指针 移动 col 其他 传递 first XA ios
函数模板men_fn()相当于STL中内置的仿函数,把成员函数转为函数对象,使用对象指针进行绑定。
用法类似于C++11中的bind。
template <class Ret, class T> /* unspecified */ mem_fn (Ret T::* pm);
返回的对象的类型具有以下属性:
1)它的函数调用将T类型的对象(或引用或指向它的指针)作为第一个参数,并将其作为附加参数用于pm(如果有)所采用的参数。 这种以fn作为第一个参数的调用的效果与调用fn.* pm或(* fn).* pm(如果fn是一个指针)相同,并转发任何其他参数。
2)它有一个成员result_type,定义为Ret的别名(这是pm的返回类型)。
3)如果pm指向的成员不带任何参数,则它有一个成员argument_type,定义为T *的别名。
4)如果由pm指向的成员接受一个参数,则它具有成员first_argument_type(定义为T *的别名)和成员second_argument_type(定义为pm所采用参数的别名)。
5)它不是可移动的可构建的,不可移植的,可以复制的。
参数:pm
指向成员函数的指针。
返回值:
返回一个函数对象,当被调用时,它将对作为第一个参数传递的对象调用pm。返回类型未指定,但返回的类型是具有上述属性的函数对象类。
example:
// mem_fn example #include <iostream> // std::cout #include <functional> // std::mem_fn struct int_holder { int value; int triple() {return value*3;} }; int main () { int_holder five {5}; // 直接调用成员函数 std::cout << five.triple() << ‘\n‘; //15 // 使用mem_fn调用 auto triple = std::mem_fn (&int_holder::triple); std::cout << triple(five) << ‘\n‘; //15 return 0; }
参考:http://www.cplusplus.com/reference/functional/mem_fn/
标签:rip 对象指针 移动 col 其他 传递 first XA ios
原文地址:https://www.cnblogs.com/bencai/p/9138463.html