> On 15 Mar 2018, at 07:41, Frank Heckenbach <f.heckenb...@fh-soft.de> wrote: > > Hans Åberg wrote: > >>>> It could be deliberate to avoid them being exported. But C++ now >>>> has namespaces, which cann be used to avoid name conflicts. >>> >>> It's all in a namespace anyway (yy by default) and we're only >>> talking about a constructor, so no name conflicts. I think it was a >>> simple mistake. >> >> It would seem reasonable that the C++ parser has fewer options, >> with say always headers for example. The stack, location and >> position headers might be in the parser header, so there is no >> conflict when using multiple parsers. > > I don't particularly like those extra headers (see my mail in the > other thread "Generated headers"), but for now I don't want to > change more than necessary.
They conflict if using multiple parsers with different namespaces. > But I generally agree that fewer options are necessary due to more > features of C++. In particular, in my C++17 version, I had to > disable "%printer" for variants and "%destructor" (with and without > variants) in favour of standard C++ overloading. This was also a > consequence of the problems with type overrides (e.g. in mid-rule > actions). Those were written for C. If one can always use C++ features, that is better.