----- Original Message ----- From: "David Abrahams" <[EMAIL PROTECTED]>
... > I mean that if a metafunction is a template instead of a type you > can't treat it polymorphically with other things, e.g. you can't put > it in a type sequence. Yes, you can with the appropriate binders. That is what I meant. > > struct metafunction { > > template<class T> struct actual_metafunction { > > // ... > > }; > > }; > > > > vs. > > > > template<class T> struct metafunction { > > // ... > > }; > > mpl::lambda handles the transformation from the latter to the former. Yeah, I retract that statement. ;) It is easy to map them back and forth. > > I'm not saying the convention is bad, just that it has its own set of > > associated problems. > > > >> Other than that, the final interface you show is one that's acheivable > >> without TTP at all. > > > > Yes, you can do it without TTP, but it isn't as clean. (I only had a rough > > idea in my head when I made the remark.) You pay a price for the > > abstraction that you mention by "metafunction polymorphism." > > Hmm? Code clarity. As abstraction goes up, clarity goes down. > > Altogether, I'm quite pleased with the mechanism, as I find the linear > > typelist implementation "neat," and I've never seen anything like that > > implementation. > > libs/python/test/if_else.cpp might be of interest to you. I'll take a look. > > The template classes "fold_left" and "fold_right" are not > > even metafunctions in any normal sense. I wouldn't know what to call them! > > They're interesting to a point, but inflexible. Any given usage is > restricted to working on sequences of a particular length. Yes, however, the intended purpose is as an inline definition, not as a sequence type, and it doesn't require the code replication necessary to support something like "mpl::vector". I'm not saying that it's "super great" overall. I'm merely saying that it amuses me, and I like it. ;) Paul Mensonides _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost