ptr_fun是将一个普通的函数适配成一个functor,添加上argument type和result type等类型, 其实现如下(例子里面是binary_function,unary_function同理):
template<class _Arg1,
class _Arg2,
class _Result> inline
pointer_to_binary_function<_Arg1, _Arg2, _Result,
_Result(__fastcall *)(_Arg1, _Arg2)>
ptr_fun(_Result (__fastcall *_Left)(_Arg1, _Arg2))
{ // return pointer_to_binary_function functor adapter
return (std::pointer_to_binary_function<_Arg1, _Arg2, _Result,
_Result (__fastcall *)(_Arg1, _Arg2)>(_Left));
}
由上面的代码可见,ptr_fun只是将一个普通的函数(或者函数指针)适配成类pointer_to_binary_function,而该类实际上是binary_function的子类,这样出来的functor就有利于同STL的算法等适配。
下面的例子就是说明了使用ptr_fun将普通的函数适配成bind1st或bind2nd能够使用的functor,否则对bind1st或bind2nd直接绑定普通函数,则编译出错。
#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;
int sum(int arg1, int arg2)
{
cout<<"ARG 1: "<<arg1<<endl;
cout<<"ARG 2: "<<arg2<<endl;
int sum = arg1 + arg2;
cout<<"SUM: "<<sum<<endl;
return sum;
}
int main(int argc,char* argv[])
{
bind1st(ptr_fun(sum),1)(2); // the same as sum(1,2)
bind2nd(ptr_fun(sum),1)(2); //the same as sum(2,1)
getchar();
return 0;
}
分享到:
相关推荐
Instantiating _com_ptr_t objects remotely讨论_com_ptr_t远程对象(5KB)
linux程序 C语言ptr_struct_file.cbuff_type_test.c
com组件的使用一般以智能型指针为主,本文主要分析 智能型指针_com_ptr_t 的机制和使用
PTR_MS在线监测大气挥发性有机物研究进展PTR_MS在线监测大气挥发性有机物研究进展
Linux高级程序设计中文第三版杨宗德--人电出版社 ANSI C 文件IO管理 调试P83的程序 ptr_struct_file.c
四种智能指针的使用、机制和缺陷分析
一个用起来比较简单的无线信号处理发送芯片,可直接与单片机的串口相连,发送信号,对单片机开发人员很有用途
opencv3.3.0链接库,用于Visual Studio 配置opencv3.3.0。
关于网络节点的分配,可以根据代码实时检测出网络数据,然后根据数据掌握节点内容。
(1) 如何把显卡切换到图形模式: 调用 int 10h 中断 (2) 如何把坐标(x,y)转化成 13h 模式下的偏移地址 (3) 显卡内存中的一个字节表示一
使用_ConnectionPtr接口开发ACCESS数据库,ADO。
3D空间检测indoor中的权值—Scannet数据集
3维空间检测权值—Sunrgbd数据集
ptr_vector 是标准 C++ 向量的包装器这为迭代器和成员函数减少了一层间接。 本质上,ptr_vector 允许您将指针向量视为值向量。
介绍ptr6000无线模块的详细信息,并附有源程序,以及相关的设置定义等
主要介绍了C++11新特性之智能指针,包括shared_ptr, unique_ptr和weak_ptr的基本使用,感兴趣的小伙伴们可以参考一下
C++ 智能指针(shared_ptr/weak_ptr)源码 源码位置:gcc-6.1.0\gcc-6.1.0\libstdc++-v3\include\tr1 这里只单列shared_ptr.h文件用于分析
{ retn Call_DWORD_Ptr_EAX Call_DWORD_Ptr_EBP Call_DWORD_Ptr_EBX Call_DWORD_Ptr_ECX Call_DWORD_Ptr_EDI Call_DWORD_Ptr_EDX Call_DWORD_Ptr_ESI Call_DWORD_Ptr_ESP } 增强 APIHOOK DetourHook 内存类 读写内存...
ITT飞力ATU701远程监控产品配置手册pdf,ITT飞力ATU701远程监控产品配置手册
子程序 Mov_EBX_DWORD_Ptr_ECX_Add, , 公开 .参数 i, 整数型 .如果 (i ≤ 127 且 i ≥ -128) 代码 = 代码 + 字节集还原 (“8B59”) + Int2Hex (i, 2) .否则 代码 = 代码 + 字节集还原 (“8B99”) + Int2Hex...