If I have a constructor with n parameters such that any argument to that can be an rvalue and lvalue. Is it possible to do support this with move semantics for the rvalues without writing 2^n constructors for each possible rvalue/lvalue combination?
Share
You take each one by value, like this:
The initialization of the function parameters by the argument will either be a copy-constructor or move-constructor. From there, you just move the function parameter values into your member variables.
Remember: copy- and move-semantics are a service provided by the class, not by you. In C++0x, you no longer need to worry about how to get your own “copy” of the data; just ask for it and let the class do it:
Note: your constructor only takes in values, those values will figure out how to construct themselves. From there, of course, it’s up to you to move them where you want them.
This applies everywhere. Have a function that needs a copy? Make it in the parameter list:
In C++03, you could emulate it fairly well, but it wasn’t common (in my experience):