Defaulted and deleted functions
In C++, classes have special members (constructors, destructors, and assignment operators) that may be either implemented by default by the compiler or supplied by the developer. However, the rules for what can be default implemented are a bit complicated and can lead to problems. On the other hand, developers sometimes want to prevent objects from being copied, moved, or constructed in a particular way. This is possible by implementing different tricks using these special members. The C++11 standard has simplified many of these by allowing functions to be deleted or defaulted in the manner we will see in the next section.
Getting started
For this recipe, you need to be familiar with the following concepts:
- Special member functions (default constructor, destructor, copy constructor, move constructor, copy assignment operator, move assignment operator)
- The copyable concept (a class features a copy constructor and copy assignment...