Joel de Guzman wrote: ...
Actually, Spirit v1.5.1 rules can be stored as you've tried to do. Unfortunately, the C++ copy/assignment semantics differ too much from EBNF that when I tried to merge a hybrid, people complained and it caused lots of confusion (see the Boost Spirit review sometime in October 2002). ...
I don't claim the following is the only truth. It's just my subjective point of view. IMO the C++ copy/assigment semantics is very importent. A breach of this semantics is much more confusing than the need of "r = rr.alias();" Even if the former beaviour was not suitable, I wouldn't abolish the copy/assigment semantics. Instead of it I would change the way of setting rules in this way: r.reset(a >> b); r.reset(rr); So this r = rr; would lead to sharing definition and this r = a >> b; would be an error. As I said, this is only my point of view. I will be glad to confront it with any other. Regards, w