
Markus Werle wrote:
So what we really need together with the tutorials and the documentation is a wiki about the design and evolution of boost.
Design rationales are good. A wiki might work, but a better place might be in a "Rationale" section in each Boost library's documentation.
Then Eric Niebler could explain in depth why he needs "static, aggregate initialization" in proto (see http://thread.gmane.org/gmane.comp.parsers.spirit.devel/2886/focus=2890) and why mpl does not fit for proto.
Static initialization in proto is important so that when DSEL authors declare their global primitives like _1, there are no global initialization order problems. The only problem I had using MPL with proto was compile-time performance problems when using MPL lambdas. In order to keep compile times down, I've replaced as much template meta-programming in proto as possible with preprocessor meta-programming. And proto is a bit of a special case since TMP-heavy libraries are built on top of proto, so the TMP overhead of proto itself should be as small as possible. MPL is a very nice abstraction, but it's not free. Ditto for Fusion. And yes, I measure compile time performance and don't optimize prematurely. :-) -- Eric Niebler Boost Consulting www.boost-consulting.com