diff options
author | Valentin Tolmer <valentin.tolmer@gmail.com> | 2020-09-09 16:43:22 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-09-12 14:10:02 +0200 |
commit | b7e2cac2aaee433415209ac65092425164eccd76 (patch) | |
tree | f8d9f701402cc6e319ff24a2533598e43a28017a | |
parent | 93d6a5ba4df9ccc0935ef2c8bc892c02c8c1540d (diff) | |
download | bison-b7e2cac2aaee433415209ac65092425164eccd76.tar.gz |
glr2.cc: add copy constructor to yyGLRStackItem
This silences the clang warning -Wdeprecated-copy.
* data/skeletons/glr2.cc: here.
-rw-r--r-- | data/skeletons/glr2.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc index 987ac2e4..f115dcc0 100644 --- a/data/skeletons/glr2.cc +++ b/data/skeletons/glr2.cc @@ -127,6 +127,7 @@ m4_define([b4_shared_declarations], b4_percent_code_get([[requires]])[ #include <algorithm> #include <cstddef> // ptrdiff_t +#include <cstring> // memcpy #include <iostream> #include <iomanip> #include <stdexcept> @@ -1239,6 +1240,18 @@ struct yyGLRStackItem { } } + yyGLRStackItem(const yyGLRStackItem& other) + : isState_(other.isState_) { + std::memcpy(raw_, other.raw_, union_size); + } + + yyGLRStackItem& operator=(yyGLRStackItem other) + { + std::swap(isState_, other.isState_); + std::swap(raw_, other.raw_); + return *this; + } + ~yyGLRStackItem() { if (isState()) { getState().~yyGLRState(); |