summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Heading <ajrh@ajrh.net>2022-04-29 04:08:35 -0400
committerAkim Demaille <akim.demaille@gmail.com>2022-09-03 09:37:07 +0200
commiteb83487606276fdefd20415176aff9309a62a5ee (patch)
treedc62f8027b04c30b88a464ef99f7347fb57c50c7
parentec9c5556d9b4c18dbd3917b44a3a3e5c94670b5e (diff)
downloadbison-eb83487606276fdefd20415176aff9309a62a5ee.tar.gz
c++: enable C++11 assignment operators for lalr1.cc
<https://github.com/akimd/bison/pull/85> <https://lists.gnu.org/r/bug-bison/2022-04/msg00000.html> * data/skeletons/c++.m4: Enable C++11 assignment operators for all C++ skeletons.
-rw-r--r--NEWS2
-rw-r--r--data/skeletons/c++.m412
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