variants: prohibit simple copies
authorAkim Demaille <akim@lrde.epita.fr>
Wed, 19 Dec 2012 09:18:03 +0000 (10:18 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Wed, 19 Dec 2012 10:30:22 +0000 (11:30 +0100)
commit7be08dfbe7efc259a4d11c320e85ffbec494a45f
treebeaa02c1d13ea300a4dbd40742d2fa2221b3b683
parent35f70d169f6bc2a00b0ffca8bfd388516c4af70f
variants: prohibit simple copies

The "variant" structure provides a means to store, in a typeless way,
C++ objects.  Manipulating it without provide the type of the stored
content is doomed to failure.  So provide a means to copy in a type
safe way, and prohibit typeless assignments.

* data/c++.m4 (symbol_type::move): New.
* data/lalr1.cc: Use it.
* data/variant.hh (b4_variant_define): Provide variant::copy.
Let variant::operator= abort.
We cannot undefine it, yet, as it is still uses by the implicit
assigment in symbols, which must also be disabled.
data/c++.m4
data/lalr1.cc
data/variant.hh