From 04816a6f3203968479591ebbe1886537674fa110 Mon Sep 17 00:00:00 2001 From: Theophile Ranquet Date: Fri, 11 Jan 2013 11:41:07 +0100 Subject: 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. --- data/c++.m4 | 11 +++++++++++ data/glr.cc | 1 + data/lalr1.cc | 1 + data/variant.hh | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) 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 (); -- cgit v1.2.1