@ -21967,7 +21967,7 @@ In this rare case, you could make the destructor public and non-virtual but clea
In general, however, avoid concrete base classes (see Item 35). For example, `unary_function` is a bundle-of-typedefs that was never intended to be instantiated standalone. It really makes no sense to give it a public destructor; a better design would be to follow this Item's advice and give it a protected non-virtual destructor.
## <aname="Sd-consistent"></a>Define Copy, move, and destroy consistently
@ -22148,7 +22148,7 @@ Prefer compiler-generated (including `=default`) special members; only these can
In rare cases, classes that have members of strange types (such as reference members) are an exception because they have peculiar copy semantics.
In a class holding a reference, you likely need to write the copy constructor and the assignment operator, but the default destructor already does the right thing. (Note that using a reference member is almost always wrong.)
@ -22585,8 +22585,6 @@ Alternatively, we will decide that no change is needed and delete the entry.
\[Alexandrescu01]: A. Alexandrescu. Modern C++ Design (Addison-Wesley, 2001).
* <aname="Cplusplus03"></a>
\[C++03]: ISO/IEC 14882:2003(E), Programming Languages — C++ (updated ISO and ANSI C++ Standard including the contents of (C++98) plus errata corrections).
* <aname="CplusplusCS"></a>
\[C++CS]: ???
* <aname="Cargill92"></a>
\[Cargill92]: T. Cargill. C++ Programming Style (Addison-Wesley, 1992).