From eb83487606276fdefd20415176aff9309a62a5ee Mon Sep 17 00:00:00 2001 From: Anthony Heading Date: Fri, 29 Apr 2022 04:08:35 -0400 Subject: c++: enable C++11 assignment operators for lalr1.cc * data/skeletons/c++.m4: Enable C++11 assignment operators for all C++ skeletons. --- NEWS | 2 ++ data/skeletons/c++.m4 | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index aabca967..f480cb95 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,8 @@ GNU Bison NEWS Fixed spurious warnings about input containing `m4_` or `b4_`. + The C++ skeletons now expose copy and move operators for symbols. + * Noteworthy changes in release 3.8.2 (2021-09-25) [stable] Fixed portability issues of bison on Cygwin. diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4 index 78f71fce..d63d1548 100644 --- a/data/skeletons/c++.m4 +++ b/data/skeletons/c++.m4 @@ -346,7 +346,7 @@ m4_define([b4_symbol_type_define], clear (); } -]b4_glr2_cc_if([[ +#if 201103L <= YY_CPLUSPLUS /// Copy assignment. basic_symbol& operator= (const basic_symbol& that) { @@ -368,7 +368,7 @@ m4_define([b4_symbol_type_define], location = std::move (that.location);]])[ return *this; } -]])[ +#endif /// Destroy contents, and record that is empty. void clear () YY_NOEXCEPT @@ -454,13 +454,13 @@ m4_define([b4_symbol_type_define], /// Constructor from (external) token numbers. by_kind (kind_type t) YY_NOEXCEPT; -]b4_glr2_cc_if([[ +#if 201103L <= YY_CPLUSPLUS /// Copy assignment. by_kind& operator= (const by_kind& that); /// Move assignment. by_kind& operator= (by_kind&& that); -]])[ +#endif /// Record that this symbol is empty. void clear () YY_NOEXCEPT; @@ -584,7 +584,7 @@ m4_define([b4_public_types_define], : kind_ (yytranslate_ (t)) {} -]b4_glr2_cc_if([[ +#if 201103L <= YY_CPLUSPLUS ]b4_inline([$1])]b4_parser_class[::by_kind& b4_parser_class[::by_kind::by_kind::operator= (const by_kind& that) { @@ -599,7 +599,7 @@ m4_define([b4_public_types_define], that.clear (); return *this; } -]])[ +#endif ]b4_inline([$1])[void ]b4_parser_class[::by_kind::clear () YY_NOEXCEPT -- cgit v1.2.1