
On 10-07-23 11:32 AM, Eric Niebler wrote:
In contrast, the expressions created by Boost.Phoenix3 will the Proto expressions. If Phoenix3 is the compiler of a C++-in-C++ domain specific language, then the Proto expression is the intermediate form. It will be documented and part of the Phoenix3 API. The grammar for valid Phoenix3 expressions will also be documented and extensible. For the first time, we will have a way to generate C++-like expression trees, just like the C++ compiler itself does. We have a standard way (Proto) to traverse and manipulate them. Sure, you can just evaluate them as you could before, but now you can do much more.
I'd just like to echo that this functionality is awesome. Heck, I already have two past use cases in mind, let alone what is now possible. Maybe if we hobble along doing this kind of research and practical work enough, C++ will get real meta-programming in 20-something. Although the monomorphic lambdas in C++0x do dampen the enthusiasm a bit... My heartfelt thanks to all Boost library authors, in particular from Boost.Bind to the Proto rewrite. Your work makes the life of thousands of programmers better and keeps C++ interesting and useful.