Dear grammar-generators,
I'm setting up my %initial-action directive this morning (so much fun) and
I can't help notice that the C++ location() and position() constructors and
initializers accept an "std::string*" and not a "const std::string*",
despite not modifying their value anywhere. The docs on the "position"
class say:

Instance Variable of position: std::string* file
  The name of the file. It will always be handled as a pointer, the parser
will never duplicate nor deallocate it. As an experimental feature you may
change it to ‘type*’ using ‘%define filename_type "type"’.

The generated parser doesn't seem to modify it.
This forces by driver object to cast away what should otherwise be a
comforting const access.
I can "fix" this by using
%define filename_type "const std::string"

Is there any reason not to make the default const?

Thank you,

Reply via email to