"David B. Held" <[EMAIL PROTECTED]> writes:
> "David Abrahams" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
>> [...]
>> Lambda "adds the type" for cases like std::vector<_1>.
>> Metafunction classes, though, are supposed to be the super-
>> efficient way to do things, so having the library perform extra
>> template instantiations to detect the nested ::type would
>> probably not be appropriate there.
>
> Ok, that's good to know. It looks like the policy adaptor is
> causing longer compile times, so converting to metafunction
> classes should actually improve that?
I don't know what "the policy adaptor" is. The Boost Iterator
library uses a design pattern we call "policy adaptor" but I think
you mean something else.
>> BTW, normally, you might:
>>
>> struct Policy
>> {
>> template <class P>
>> struct apply
>> {
>> typename some_other_class type;
>> };
>> };
>>
>> if nothing else, just to cut down on symbol size (you don't want
>> to see Policy::apply<...> in your error messages when it could
>> be some_other_class<...>).
>
> I guess I don't understand what the nested type is for when you
> aren't really doing a meta-computation, so I don't know what an
> appropriate type for "some_other_class" would be
Usually
some_template_name<P>
> Are you saying it can be any arbitrary type at all, since I'm not
> using the "metafunction result"? And that I should make it
> descriptive so that I don't just see a bunch of references to
> ::apply (which is going to get annoying when you have problems in
> more than one policy)?
No, I'm saying that if you use metafunction classes you have to use
the metafunction result, and you might not want it to look like
Policy::apply<P> but rather Something<P>.
I think from your other message you got the picture OK.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost