]> git.saurik.com Git - bison.git/blobdiff - data/lalr1-fusion.cc
Let yy::variant::build return an lvalue.
[bison.git] / data / lalr1-fusion.cc
index 73e4e3fc98206bf442a3c67764c41be55731227a..3a629aaf67c063741fd7b1f35d8309cf5f195760 100644 (file)
@@ -155,7 +155,8 @@ dnl FIXME: This is wrong, we want computed header guards.
 ]b4_namespace_open[
   class position;
   class location;
 ]b4_namespace_open[
   class position;
   class location;
-
+]b4_variant_if(
+[[
   /// A char[S] buffer to store and retrieve objects.
   ///
   /// Sort of a variant, but does not keep track of the nature
   /// A char[S] buffer to store and retrieve objects.
   ///
   /// Sort of a variant, but does not keep track of the nature
@@ -166,10 +167,10 @@ dnl FIXME: This is wrong, we want computed header guards.
   {
     /// Instantiate a \a T in here.
     template <typename T>
   {
     /// Instantiate a \a T in here.
     template <typename T>
-    inline void
+    inline T&
     build()
     {
     build()
     {
-      new (buffer) T;
+      return *new (buffer) T;
     }
 
     /// Destroy the stored \a T.
     }
 
     /// Destroy the stored \a T.
@@ -199,7 +200,7 @@ dnl FIXME: This is wrong, we want computed header guards.
     /// A buffer large enough to store any of the semantic values.
     char buffer[S];
   };
     /// A buffer large enough to store any of the semantic values.
     char buffer[S];
   };
-
+]])[
 ]b4_namespace_close[
 
 #include "location.hh"
 ]b4_namespace_close[
 
 #include "location.hh"