Boost logo

Boost Users :

Subject: Re: [Boost-users] MPL vs. Proto for EDSL dev?
From: Eric Niebler (eric_at_[hidden])
Date: 2013-01-04 20:36:09


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

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net