[cfe-dev] [PATCH] Add APValue::swap
    Howard Hinnant 
    hhinnant at apple.com
       
    Wed Mar  7 17:22:16 PST 2012
    
    
  
On Mar 7, 2012, at 6:05 PM, Daniel Dunbar wrote:
> Here is a patch which adds APValue::swap and uses it.
> 
> I'm not sure I like it, anyone else have an opinion for putting it in or not?
I note that the patch also introduces:
  void copy_from(const APValue &RHS);
and changes all:
-    Result = Frame->Arguments[PVD->getFunctionScopeIndex()];
to:
+    Result.copy_from(Frame->Arguments[PVD->getFunctionScopeIndex()]);
My observation is that in C++ the syntax:
   x = y;
is universally understood.  Whereas the syntax:
   x.copy_from(y);
is obviously readable, and yet it does immediately raise questions for the reader of the code:  What does copy_from do that copy assignment doesn't?  Additionally if APValue is ever going to be used in generic code, that generic code is probably going to use the syntax:
   x = y;
I guess my message is:  if there is common syntax for doing something in C++, prefer that syntax over inventing new syntax.
For swap, the member swap you've added looks good.  Most types also add a namespace scope function:
    inline void swap(APValue& x, APValue& y) {x.swap(y);}
to aid in generic code which will do:
   using std::swap;
   swap(x, y);
Disclaimer:  These comments are made without the benefit of knowledge of APValue.
Howard
    
    
More information about the cfe-dev
mailing list