Boost logo

Boost Users :

From: Edward Diener (eldiener_at_[hidden])
Date: 2008-05-06 23:15:00


Steven Watanabe wrote:
> AMDG
>
> Edward Diener wrote:
>> I understand the explanation about how placeholders work. The rule you
>> are specifying appears to be that one never adds the '::type' to the end
>> of a placeholder expression when it is being passed to an mpl construct.
>> Is that correct ?
>>
>
> You should never add ::type to a placeholder expression at all.
> Otherwise, the metafunction will probably get very confused.

Ok, understood.

>
>> I wish I knew what the is an mpl function as opposed to what is not an
>> mpl function. Perhaps the mpl algorithms are the mpl functions and
>> everything which is not an algorithm is not an mpl function.
>>
>
> Inserters, Sequences, and the types listed under "Data Types" are not
> metafunctions.
> Everything listed in a section with Metafunctions of Algorithms in its
> name are metafunctions.

Your firsat sentence above I understand. The ssecond sentence above
eludes me.

>
>>> If your not
>>> sure, the
>>> only thing to do is look it up.
>>>
>> Look up what ? Where in the reference documentation does it tell me
>> whether I need to add '::type' to the end of an mpl construct ?
>>
>
> Here are two examples from the reference:
>
> template< typename Sequence , typename State , typename ForwardOp >
> struct accumulate <./accumulate.html> {
> typedef /unspecified/ type;
> };
>
> template< typename Seq >
> struct back_inserter <./back-inserter.html> {
> // /unspecified/
> // /.../
> };

OK, I think I get it. If it is described as a metafunction, with its
nested type, then '::type' is always used.


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