From: Theophile Ranquet Date: Fri, 11 Jan 2013 10:41:07 +0000 (+0100) Subject: c++: privatize variant blind copies X-Git-Tag: v2.7.90~182 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/04816a6f3203968479591ebbe1886537674fa110?ds=inline 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. --- diff --git a/data/c++.m4 b/data/c++.m4 index 020160c9..4fb28051 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -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 + inline + ]b4_parser_class_name[::basic_symbol& + ]b4_parser_class_name[::basic_symbol::operator= (const basic_symbol& other) + { + abort (); + } + template inline ]b4_parser_class_name[::basic_symbol::basic_symbol (const basic_symbol& other) diff --git a/data/glr.cc b/data/glr.cc index 7e42346c..3f46c95d 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -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 // abort #include #include #include ]b4_defines_if([ diff --git a/data/lalr1.cc b/data/lalr1.cc index 40446b71..178b8fa9 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -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 ])[ +# include // abort # include # include # include diff --git a/data/variant.hh b/data/variant.hh index 184485c6..4317abaf 100644 --- a/data/variant.hh +++ b/data/variant.hh @@ -203,7 +203,7 @@ m4_define([b4_variant_define], } /// Prohibit blind copies. - // private: + private: self_type& operator=(const self_type&) { abort ();