[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