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 #include // ptrdiff_t +#include // memcpy #include #include #include @@ -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();