Firstly, I think the MPL is a powerful, useful library that should definitely be accepted into boost.

The biggest problem I have is with the lack of documentation, particularly for bind/lambda, though I know that Aleksey is working on that.

To add my twopennorth to the discussion of the container/algorithm separation, it can be important to know the structure of the container when writing the algorithm, even if it could be written using iterators. Take, for example, the quick-sort implementation I submitted recently. It uses pop_front and push_front, which would actually prevent its use on containers that only supply push_back/pop_back. I could have written it to use insert and erase, but to do so would hide the inefficiencies so generated --- if a container only supplies push_back/pop_back, then it is better to rewrite sort to work backwards, rather than use insert/erase. Also, it always uses the first element as a pivot, because removing elements from the middle of a list is inefficient, and removing elements from the front of a container that supports efficient removal from the middle is no worse. However, rewriting it to choose a better pivot for containers where removing elements from the middle is efficient, would improve overall performance by avoiding worst-case scenarios.

As for "metafunction class" vs "quoted metafunction", I would prefer something that more clearly meant "a class with a member template apply". "quoted metafunction" implies you can do quote<my_metafunction>, which you can't (I know lambda almost gives you that). "metafunction class" is OK, but possibly slightly confusing.

Anthony