std/boost的bind函数,占位符的实现原理究竟是什么?解决方案
std/boost的bind函数,占位符的实现原理究竟是什么?
也就是_1,_2这样的placehodler,从源代码直接看是一个很复杂的类型定义,没有看懂。
网上的教材又基本上是在说用法。
我想知道这个东西是实现机制到底是怎么样的? 谢谢.
------解决方案--------------------
where?
------解决方案--------------------
最好不要试图去看懂它。没必要浪费生命在模板元编程上。
------解决方案--------------------
STL要看都要命,何况boost,boost官方都说了“不指望你能看懂,会用就行”
------解决方案--------------------
概括来说就是根据模板的各种坑爹特性实现一堆满足指定条件的类型匹配/替换操作(好吧我承认似乎等于没说)。
详细……我也不想看。
------解决方案--------------------
我正在用boost的bind function,
bind跟function是搭配的,
比如
fun(int,int)
fun1(int,int,int)
function<int,char> aa;
aa = bind(fun,_1,_2)//即执行aa的时候,重新传入形参,执行aa(1,2)相当于fun(1,2)。
或者
aa=bind(fun1,_1,_2,4)//,即执行aa(2,3)相当于执行fun1(2,3,4)
------解决方案--------------------
我正在用boost的bind function,
bind跟function是搭配的,
比如
fun(int,int)
fun1(int,int,int)
function<int,int> aa;
aa = bind(fun,_1,_2)//即执行aa的时候,重新传入形参,执行aa(1,2)相当于fun(1,2)。
或者
aa=bind(fun1,_1,_2,4)//,即执行aa(2,3)相当于执行fun1(2,3,4)
------解决方案--------------------
------解决方案--------------------
原理性的,确实得看源码,而且感觉没必要,只要会用,知道他的优点,原理方面的,应该就是把一个函数指针弄成一个对象函数之类的。。
------解决方案--------------------
bind1st bind2nd这两个懂得话就容易了
_1 _2都是特殊类型,根据特殊类型重载得到该填充那个参数,基本上就出来了。
原理不难,难的是做出好用的。
再说新的标准有lambda了,bind就应该下岗了。
------解决方案--------------------
也就是_1,_2这样的placehodler,从源代码直接看是一个很复杂的类型定义,没有看懂。
网上的教材又基本上是在说用法。
我想知道这个东西是实现机制到底是怎么样的? 谢谢.
------解决方案--------------------
where?
------解决方案--------------------
最好不要试图去看懂它。没必要浪费生命在模板元编程上。
------解决方案--------------------
STL要看都要命,何况boost,boost官方都说了“不指望你能看懂,会用就行”
------解决方案--------------------
概括来说就是根据模板的各种坑爹特性实现一堆满足指定条件的类型匹配/替换操作(好吧我承认似乎等于没说)。
详细……我也不想看。
------解决方案--------------------
我正在用boost的bind function,
bind跟function是搭配的,
比如
fun(int,int)
fun1(int,int,int)
function<int,char> aa;
aa = bind(fun,_1,_2)//即执行aa的时候,重新传入形参,执行aa(1,2)相当于fun(1,2)。
或者
aa=bind(fun1,_1,_2,4)//,即执行aa(2,3)相当于执行fun1(2,3,4)
------解决方案--------------------
我正在用boost的bind function,
bind跟function是搭配的,
比如
fun(int,int)
fun1(int,int,int)
function<int,int> aa;
aa = bind(fun,_1,_2)//即执行aa的时候,重新传入形参,执行aa(1,2)相当于fun(1,2)。
或者
aa=bind(fun1,_1,_2,4)//,即执行aa(2,3)相当于执行fun1(2,3,4)
------解决方案--------------------
------解决方案--------------------
原理性的,确实得看源码,而且感觉没必要,只要会用,知道他的优点,原理方面的,应该就是把一个函数指针弄成一个对象函数之类的。。
------解决方案--------------------
bind1st bind2nd这两个懂得话就容易了
_1 _2都是特殊类型,根据特殊类型重载得到该填充那个参数,基本上就出来了。
原理不难,难的是做出好用的。
再说新的标准有lambda了,bind就应该下岗了。
------解决方案--------------------