At first glance, C++11 and C++14 are defined by the new features they introduce, e.g., auto type declarations, move semantics, lambda expressions, and concurrency support. Information on these features is easy to come by, but learning to apply them effectively (such that the resulting software is correct, efficient, maintainable, and portable) is more challenging.

That’s the role of this book. It describes how to write effective software using C++11 and C++14, i.e., using modern C++.

Topics include:

• The pros and cons of uniform initialization, noexcept specifications, perfect forwarding, and smart pointer make functions.• The relationships among std::move, std::forward, rvalues references, and universal references.• The most effective forms of lambda capture.• How best practices in “old” C++ programming (i.e., C++98) require revision for modern C++.Effective Modern C++ follows the proven format of Scott Meyers’ earlier Effective books (Effective C++, More Effective C++, and Effective STL), but covers entirely new material. It’s essential reading for every modern C++ software developer.