mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 09:43:03 +00:00
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:
11
data/c++.m4
11
data/c++.m4
@@ -186,6 +186,9 @@ m4_define([b4_public_types_declare],
|
|||||||
[const semantic_type& v],
|
[const semantic_type& v],
|
||||||
b4_locations_if([const location_type& l]))[);
|
b4_locations_if([const location_type& l]))[);
|
||||||
|
|
||||||
|
/// Assignment operator.
|
||||||
|
inline basic_symbol& operator= (const basic_symbol& other);
|
||||||
|
|
||||||
/// Destructive move, \a s is emptied.
|
/// Destructive move, \a s is emptied.
|
||||||
inline void move (basic_symbol& s);
|
inline void move (basic_symbol& s);
|
||||||
|
|
||||||
@@ -250,6 +253,14 @@ m4_define([b4_public_types_define],
|
|||||||
, location (l)
|
, 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>
|
template <typename Base>
|
||||||
inline
|
inline
|
||||||
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
|
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
|
||||||
|
|||||||
@@ -253,6 +253,7 @@ m4_define([b4_shared_declarations],
|
|||||||
[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
|
[m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
|
||||||
b4_percent_code_get([[requires]])[
|
b4_percent_code_get([[requires]])[
|
||||||
|
|
||||||
|
#include <cstdlib> // abort
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>]b4_defines_if([
|
#include <iostream>]b4_defines_if([
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
|
|||||||
m4_define([b4_shared_declarations],
|
m4_define([b4_shared_declarations],
|
||||||
[b4_percent_code_get([[requires]])[
|
[b4_percent_code_get([[requires]])[
|
||||||
]b4_parse_assert_if([# include <cassert>])[
|
]b4_parse_assert_if([# include <cassert>])[
|
||||||
|
# include <cstdlib> // abort
|
||||||
# include <vector>
|
# include <vector>
|
||||||
# include <iostream>
|
# include <iostream>
|
||||||
# include <stdexcept>
|
# include <stdexcept>
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ m4_define([b4_variant_define],
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Prohibit blind copies.
|
/// Prohibit blind copies.
|
||||||
// private:
|
private:
|
||||||
self_type& operator=(const self_type&)
|
self_type& operator=(const self_type&)
|
||||||
{
|
{
|
||||||
abort ();
|
abort ();
|
||||||
|
|||||||
Reference in New Issue
Block a user