On 27 May 2009, at 10:32, Vincent Zweije wrote:

||  So what does the C++ standard say about it?

"In a union, at most one of the data members can be active at any time,
that is, the value of at most one of the data members can be stored in
a union at any time. [...] Each data member is allocated as if it were
the sole member of a struct."

And for those interested in the problem with the bison union:

"An object of a class with a non-trivial constructor (12.1), a non- trivial copy construtor (12.8), a non-trivial destructor (12.4), or a non- trivial
copy assignment operator (13.5.3, 12.8) cannot be a member of a union,
nor can an array of such objects."

I saw those, but none of them say anything about pointers - it probably follows from the grammar-like rules in 9.2.

||  Did you see the post by Vincent?

And I noticed that std::string appears to be used as well, which needs
a #include <string>. :)

I could not reproduce the compile error. If I include the header <string>, I do not need to include <utility>, and if I exclude both or <string>, I get different compiler errors. I did not use a full Bison generated parser, nor "using namespace std".

  Hans




_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to