I view move semantics as the marquee feature of C++0x. Use of and control over move semantics is as central to C++0x as is use of and control over copy semantics in “old” C++ (i.e., C++98/C++03).
The implementation of move semantics relies on rvalue references, so this session would really be about both move semantics and rvalue references. Even if you’ve been casting an eye towards C++0x developments for the last couple of years and are familiar with the basic ideas behind rvalue references and move semantics, you may not be aware that the rules were changed in some fairly significant ways in the last 18 months. Lvalues may no longer bind to rvalue references, and move constructors and move assignment operators are now “special member functions” (like copy constructors and copy assignment operators) that compilers implicitly generate under suitable circumstances.
What are your feelings about a session devoted to explaining the central role of move semantics and rvalue references in C++0x?
Scott
July 26, 2010 at 11:13 am
I like the idea. This seems like a feature of C++0x with a big, wide-ranging, impact.
Of course, I haven’t seen any proposed sessions that I don’t like yet. If it comes to having to prioritize, this is something I’d like to see kept, either on it’s own or as part of a broader session on these very basic changes to the language.
July 26, 2010 at 1:47 pm
Yes, definitely. Then again, I would like to see discussions on all of the major C++0x features.
And I’m not sure how you rank rvalue operators over lambda functions, or the standard thread library… or, pragmatically speaking, the profoundly useful reinvention of ‘auto’. Let’s call it a four-way tie. ;^)
July 27, 2010 at 9:21 am
I like this idea. I have been looking forward to taking advantage of the new move semantics since I first read about them. Performance is a top priority for my work and rvalue references hold out the promise of some nice speed improvements.