
David Abrahams wrote:
"Eric Niebler" <eric@boost-consulting.com> writes:
Objects of the parameters<> type are callable entities, but they do not play well with result_of:
BOOST_PARAMETER_KEYWORD(tag, foo)
typedef parameter::parameters< parameter::optional< tag::foo > > args_type;
// Doesn't compile: typedef result_of< args_type( int const & ) >::type pack_type;
args_type args; pack_type pack( args( 1 ) );
Is there any way to tell what the return type of args( 1 ) is? I need to be able to return an argument pack from a generic function.
I'll have to get back to you on that one. I don't think there's a nice way, yet.
Actually, I think there is. There is a nested template called "argument_pack" that /seems/ to do the right thing, but it's undocumented. And the function-call operators do not use it to declare their return types, so it's anybody's guess whether they're always equivalent. There's also a nested template called "bind", but it's not clear what it is for, or how it differs from "argument_pack".
Another feature request: it would be nice if parameters<> were a valid MPL sequence that I could manipulate with MPL algorithms.
It already is an MPL sequence.
No, it's not. An argument pack is an MPL sequence, but a parameters<> instantiation is not. -- Eric Niebler Boost Consulting www.boost-consulting.com