c++: privatize variant blind copies

* data/variant.hh (variant, operator=): Make private.
* data/c++.m4 (operator=): New, to avoid needing a definition of that operator
for each class member (such as a possible variant).
* data/glr.cc, data/lalr.cc: Add the necessary include for the abort.
This commit is contained in:
Theophile Ranquet
2013-01-11 11:41:07 +01:00
parent 39ad6cc6ac
commit 04816a6f32
4 changed files with 14 additions and 1 deletions

View File

@@ -186,6 +186,9 @@ m4_define([b4_public_types_declare],
[const semantic_type& v],
b4_locations_if([const location_type& l]))[);
/// Assignment operator.
inline basic_symbol& operator= (const basic_symbol& other);
/// Destructive move, \a s is emptied.
inline void move (basic_symbol& s);
@@ -250,6 +253,14 @@ m4_define([b4_public_types_define],
, location (l)
{}])[
template <typename Base>
inline
]b4_parser_class_name[::basic_symbol<Base>&
]b4_parser_class_name[::basic_symbol<Base>::operator= (const basic_symbol& other)
{
abort ();
}
template <typename Base>
inline
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const basic_symbol& other)

View File

@@ -253,6 +253,7 @@ m4_define([b4_shared_declarations],
[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
b4_percent_code_get([[requires]])[
#include <cstdlib> // abort
#include <stdexcept>
#include <string>
#include <iostream>]b4_defines_if([

View File

@@ -146,6 +146,7 @@ b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
m4_define([b4_shared_declarations],
[b4_percent_code_get([[requires]])[
]b4_parse_assert_if([# include <cassert>])[
# include <cstdlib> // abort
# include <vector>
# include <iostream>
# include <stdexcept>

View File

@@ -203,7 +203,7 @@ m4_define([b4_variant_define],
}
/// Prohibit blind copies.
// private:
private:
self_type& operator=(const self_type&)
{
abort ();