Having covered the basics of `auto` and rvalue references, there is a third big new C++ feature definitely worth knowing about: creating function objects on the fly with lambda expressions.
Modern C++ Features
The last weeks I have been writing a lot about move semantics, move operations, rvalue references and forwarding references. While it might take a bit of getting used to all this, there’s good news.
Combining rvalue references with templated function parameters or `auto` behaves quite differently than “normal” rvalue references. Together with the utility function template `std::forward` they allow something called “perfect forwarding” and are therefore also called forwarding references.
After introducing the concept of move semantics and describing how move constructors and move assignment operators work, I’ll wrap up my discussion of the topic with my answer to one question: […]
In my last post I gave a little introduction to move semantics and a very brief description of rvalue references. This time I will cover two special functions that are based on those language features and are key to integrating them into each and every C++ program: The move constructor and move assignment operator.
One of the biggest changes in C++11 were the introduction of rvalue references to allow the implementation of move semantics. I will give an overview of the basic idea of move semantics, its related features and how to use them.
A few posts ago I have written about `auto` for variables. This time will be about the same keyword for a different use: `auto` as return type for functions.
In my last post I have written about braced-or-equal-initializers for class members, a feature that enables simpler constructors through default values for members. Today’s post is about two related features that can simplify the writing of constructors even further.
One of the less discussed but nevertheless useful features in C++11 is the possibility to provide initializers for class members right in the class definition.
Here we go again with two features that have been added in C++11 that can greatly simplify the code we write.