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:
>>
>>
>> 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk