The Boost Proto Library is a framework for building EmbeddedDomainSpecificLanguages in CeePlusPlus. It is one of the BoostLibraries.
Motivation
Expression Templates are an advanced technique that C++ library developers use to define embedded mini-languages that target specific problem domains. The technique has been used to create efficient and easy-to-use libraries for linear algebra as well as to define C++ parser generators with a readable syntax. But developing such a library involves writing an inordinate amount of unreadable and unmaintainable template mumbo-jumbo. Boost.Proto eases the development of domain-specific embedded languages (EDSLs).
It is used in other boost libraries include the BoostPhoenixLibrary. Some of the examples make use of BoostXpressive to handle RegularExpressions.
This is a very powerful library with lots of interesting features. It is also fairly difficult to learn without investing quite a lot of time in the effort. After a while the relationship of the various parts of the library becomes more natural. There are examples which develop several EmbeddedDomainSpecificLanguages (EDSL), including a reimplementation of BoostLambdaLibrary using BoostProtoLibrary. One feature is the ability to combine different EDSLs either one as a subdomain of the other or else to make one a subdomain of the global domain, i.e. anything. -- JohnFletcher
See also CppTemplateMetaprogramming.