]> git.saurik.com Git - bison.git/blobdiff - data/variant.hh
parser: use %empty
[bison.git] / data / variant.hh
index 047e641ba7ae37d96d848f152d598d81d9b4be6d..91548d849b49e79cc6d0cef5d3c70d1d7916498d 100644 (file)
@@ -142,7 +142,10 @@ m4_define([b4_variant_define],
     {]b4_parse_assert_if([
       YYASSERT (tname == typeid (T).name ());
       YYASSERT (sizeof (T) <= S);])[
-      return reinterpret_cast<T&> (buffer.raw);
+      {
+        void *dummy = buffer.raw;
+        return *static_cast<T*> (dummy);
+      }
     }
 
     /// Const accessor to a built \a T (for %printer).
@@ -152,7 +155,10 @@ m4_define([b4_variant_define],
     {]b4_parse_assert_if([
       YYASSERT (tname == typeid (T).name ());
       YYASSERT (sizeof (T) <= S);])[
-      return reinterpret_cast<const T&> (buffer.raw);
+      {
+        const void *dummy = buffer.raw;
+        return *static_cast<const T*> (dummy);
+      }
     }
 
     /// Swap the content with \a other, of same type.
@@ -217,7 +223,7 @@ m4_define([b4_variant_define],
     } buffer;]b4_parse_assert_if([
 
     /// Whether the content is built: if defined, the name of the stored type.
-    const chartname;])[
+    const char *tname;])[
   };
 ]])