$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Rozental, Gennadiy (gennadiy.rozental_at_[hidden])
Date: 2002-11-15 13:32:55
> -----Original Message-----
> From: Aleksey Gurtovoy [mailto:agurtovoy_at_[hidden]]
> Sent: Friday, November 15, 2002 7:52 AM
> To: 'Boost mailing list'
> Subject: RE: [boost] MPL lambda
>
>
> Rozental, Gennadiy wrote:
> > I am having hard time grasping how this %#$% lambda facility
> > is working.
>
> I hope you mean "what it does/how to use it" as opposite to
> "how it does
> what it does" ;).
In fact it is second ;-)
> // numbered placeholders semantics
> plus<_1, int_c<5> > == bind<meta_fun2<plus>,_1,int_c<5> >
> plus< int_c<5>,_1 > == bind<meta_fun2<plus>,int_c<5>,_1 >
> plus< int_c<5>,_2 > == bind<meta_fun2<plus>,int_c<5>,_2 >
> plus<_1,_2> == bind<meta_fun2<plus>,_1,_2>
> plus<_2,_1> == bind<meta_fun2<plus>,_2,_1>
>
> logical_or< is_same<_1,int>, is_same<_1,long> >
> = bind< meta_fun2<logical_or>
> , bind< meta_fun2<is_same>,_1,int >
> , bind< meta_fun2<is_same>,_1,long >
> >
>
> is_same< _1, add_pointer<_2> >
> == bind< meta_fun2<is_same>
> , _1
> , bind< meta_fun1<add_pointer>, _2 >
> >
It would help if you start with what meta_fun[n] are, cause they are not
covered in docs. Also if I understand correctly it require template template
parameters. How then it works for MSVC6.5?
>
> // unnamed placeholder semantics
> plus< _,int_c<5> > == plus<_1, int_c<5> >
> plus< int_c<5>,_ > == plus< int_c<5>,_1 >
> ??? == plus< int_c<5>,_2 > // can't be built using
> unnamed notation
> plus<_,_> == plus<_1,_2>
> ??? == plus<_2,_1>
>
> logical_or< is_same<_,int>, is_same<_,long> >
> = logical_or< is_same<_1,int>, is_same<_1,long> >
>
> is_same< _, add_pointer<_> > != is_same< _1,
> add_pointer<_2> > // !!!
> is_same< _, add_pointer<_> >
> == bind< meta_fun2<is_same>
> , _1
> , bind< meta_fun1<add_pointer>, _1 > // !!!
> >
>
So the _ placeholder is substituted with appropriated numbered one based on
position in expression. How did you managed to achieve this?
Gennadiy.