> You do not need exceptions to implement what I said, just to return a > value. A boolean would suffice to detect whether you parsed a > definition. Sure, I was talking generally. > The "before whatever" is hardcoded. And tentative parsing is > thoroughly abused in the parser. Well, I tried to parse it normally, but the function called from the regular for loop expected after the declaration one of the following ';', ',', '(', '=', '{' if I remember right. When it found a ':' it choked and emitted an error. Probably it would be better to let the unknown char to be handled by the calling function. In this way if I see a ':' I know that it is a range-based for and no tentative is needed.
But this is too big a change for me at the moment. For now, in order to solve Magnus's problem I suggest to just remove the check for new type in cp_parser_range_for(). Regards. Rodrigo