|
Boost Users : |
Subject: Re: [Boost-users] [MPL] - for_each operators with decision branching
From: strasser_at_[hidden]
Date: 2010-05-19 14:39:13
Zitat von Noah Roberts <roberts.noah_at_[hidden]>:
> struct operator
> {
> template < typename MetaField >
> void operator()(MetaField const&, boost::enable_if< some_test >::type
> * = 0);
> template < typename MetaField >
> void operator()(MetaField const&, boost::disable_if<some_test>::type *
> = 0);
> };
the point of code like this usually is to only instantiate the branch
that is chosen, otherwise you could just use
if(some_test::value)...else...
that means that the two branches must be in different functions, so I
don't see a way to make this any easier, or how a library like MPL
could.
you can however avoid the use of enable_if, if you prefer:
void operator()(T t){
this->operator()(t,typename some_test<...>::type());
}
void opeartor()(T t,mpl::true_ test_is_true){
...
}
void opeartor()(T t,mpl::false_){
...
}
this also makes writing 3 or more branches (if...elseif...else) easier
because you can use more than one condition parameter for overloading.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net