"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