Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2006-09-25 13:01:39

David Abrahams wrote:
> "Eric Niebler" <eric_at_[hidden]> writes:
>> Objects of the parameters<> type are callable entities, but they do not
>> play well with result_of:
>> 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

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

Boost list run by bdawes at, gregod at, cpdaniel at, john at