On 1/4/2013 4:40 PM, Chris Russell wrote:
Hello, all. I'm reading the MPL book (again) and tinkering with some ideas for a new library for building complex FSM hierarchies [1].
I've got a minimal runtime library written that codifies the important concepts but now want to try to make it a native C++ EDSL and am wondering if it makes more sense to concentrate on MPL, Proto (or both)?
For pure education on the subject of C++ template metaprogramming the MPL and the amazing Abrahams/Gurtovoy book seems like the right starting place but would appreciate any advice you folks are willing to share with me.
Thanks, Chris
[1] I am aware of other FSM libs (e.g. StateChart, MSM) and likely some of what I'm planning is redundant. That's okay: my goal is to gain deeper understanding of C++ template metaprogramming by working through a non-trivial problem.
(Disclaimer: I'm the author of Proto and so am biased.) MPL is a general-purpose library for meta-programming, but doesn't offer anything specifically targeted for building EDSLs. Proto, on the other hand, is designed with EDSLs in mind. I think it's the better tool for the job. That said, many of the concepts from MPL carry over into Proto, so if you're setting out to learn Proto, having a grasp of MPL will help. A good way to learn more about Proto is to read the article series about it on cpp-next.com: http://cpp-next.com/archive/2010/08/expressive-c-introduction/ There is a low-traffic mailing list dedicated to proto[*]. If you have questions, that's a good place to go for help. Or even stackoverflow, if you use the boost-proto tag. [*] http://lists.boost.org/mailman/listinfo.cgi/proto -- Eric Niebler BoostPro Computing http://www.boostpro.com