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 f...