bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

c++: the assignment operator does not have to be const


From: Akim Demaille
Subject: c++: the assignment operator does not have to be const
Date: Thu, 30 Aug 2018 08:20:58 +0200

I had not realized that the assignment (the ‘copy’ one, the
‘old’ one) does not have to preserve its rhs.  Which is want
we want here (emulation of move-assignment).

commit 2116ad3a280f79ab28eba244a00d7d1358f141ef
Author: Akim Demaille <address@hidden>
Date:   Sat Aug 25 11:41:08 2018 +0200

    c++: the assignment operator does not have to be const
    
    * data/lalr1.cc (stack_symbol_type::operator=): Don't copy the
    argument, move it.

diff --git a/data/lalr1.cc b/data/lalr1.cc
index 143f3d4b..ab48d506 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -320,7 +320,7 @@ b4_location_define])])[
       /// Steal the contents from \a sym to build this.
       stack_symbol_type (state_type s, symbol_type& sym);
       /// Assignment, needed by push_back.
-      stack_symbol_type& operator= (const stack_symbol_type& that);
+      stack_symbol_type& operator= (stack_symbol_type& that);
     };
 
     /// Stack type.
@@ -603,11 +603,11 @@ m4_if(b4_prefix, [yy], [],
   }
 
   ]b4_parser_class_name[::stack_symbol_type&
-  ]b4_parser_class_name[::stack_symbol_type::operator= (const 
stack_symbol_type& that)
+  ]b4_parser_class_name[::stack_symbol_type::operator= (stack_symbol_type& 
that)
   {
     state = that.state;
     ]b4_variant_if([b4_symbol_variant([that.type_get ()],
-                                      [value], [copy], [that.value])],
+                                      [value], [move], [that.value])],
                    [[value = that.value;]])[]b4_locations_if([
     location = that.location;])[
     return *this;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]