The recipes included in this chapter are as follows:
- Using auto whenever possible
 - Creating type aliases and alias templates
 - Understanding uniform initialization
 - Understanding the various forms of non-static member initialization
 - Controlling and querying object alignment
 - Using scoped enumerations
 - Using override and final for virtual methods
 - Using range-based for loops to iterate on a range
 - Enabling range-based for loops for custom types
 - Using explicit constructors and conversion operators to avoid implicit conversion
 - Using unnamed namespaces instead of static globals
 - Using inline namespaces for symbol versioning
 - Using structured bindings to handle multi-return values