“ After I learned the C++
basics, I then learned
how to use C++ in
production code from
Meyers' series of
Effective C++ books.
Effective Modern C++
is the most important
how-to book for advice
on key guidelines,
styles, and idioms to use
modern C++ effectively
and well. Don't own it
yet? Buy this one. Now.”
—Herb Sutter
Chair of ISO C++ Standards Committee and
C++ Software Architect at Microsoft
Effective Modern C++
Coming to grips with C++11 and C++14 is more than a matter of familiarizing
yourself with the features they introduce (e.g., auto type declarations,
move semantics, lambda expressions, and concurrency support). The
challenge is learning to use those features effectively—so that your
software is correct, efficient, maintainable, and portable. That’s where
this practical book comes in. It describes how to write truly great software
using C++11 and C++14—i.e. using modern C++.
Topics include:
■ The pros and cons of braced initialization, noexcept
specifications, perfect forwarding, and smart pointer make
functions
■ The relationships among std::move, std::forward, rvalue
references, and universal references
■ Techniques for writing clear, correct, effective lambda
expressions
■ How std::atomic differs from volatile, how each should be
used, and how they relate to C++'s concurrency API
■ How best practices in "old" C++ programming (i.e., C++98)
require revision for software development in modern C++
Effective Modern C++ follows the proven guideline-based, example-driven
format of Scott Meyers' earlier books, but covers entirely new material. It's
essential reading for every modern C++ software developer.
For more than 20 years, Scott Meyers' Effective C++ books (Effective C++, More
Effective C++, and Effective STL) have set the bar for C++ programming guidance.
His clear, engaging explanations of complex technical material have earned him a
worldwide following, keeping him in demand as a trainer, consultant, and confer-
ence presenter. He has a Ph.D. in Computer Science from Brown University.
PROGRAMMING/C++
US $49.99
ISBN: 978-1-491-90399-5
CAN $52.99
Twitter: @oreillymedia
facebook.com/oreilly
E
f
f
e
c
t
i
v
e
M
o
d
e
r
n
C
+
+
M
e
y
e
r
s
Effective
Modern C++
42 SPECIFIC WAYS TO IMPROVE YOUR USE OF C++11 AND C++14
Scott Meyers
“ After I learned the C++
basics, I then learned
how to use C++ in
production code from
Meyers' series of
Effective C++ books.
Effective Modern C++
is the most important
how-to book for advice
on key guidelines,
styles, and idioms to use
modern C++ effectively
and well. Don't own it
yet? Buy this one. Now.”
—Herb Sutter
Chair of ISO C++ Standards Committee and
C++ Software Architect at Microsoft
Effective Modern C++
Coming to grips with C++11 and C++14 is more than a matter of familiarizing
yourself with the features they introduce (e.g., auto type declarations,
move semantics, lambda expressions, and concurrency support). The
challenge is learning to use those features effectively—so that your
software is correct, efficient, maintainable, and portable. That’s where
this practical book comes in. It describes how to write truly great software
using C++11 and C++14—i.e., using modern C++.
Topics include:
■ The pros and cons of braced initialization, noexcept
specifications, perfect forwarding, and smart pointer make
functions
■ The relationships among std::move, std::forward, rvalue
references, and universal references
■ Techniques for writing clear, correct, effective lambda
expressions
■ How std::atomic differs from volatile, how each should be
used, and how they relate to C++'s concurrency API
■ How best practices in "old" C++ programming (i.e., C++98)
require revision for software development in modern C++
Effective Modern C++ follows the proven guideline-based, example-driven
format of Scott Meyers' earlier books, but covers entirely new material. It's
essential reading for every modern C++ software developer.
For more than 20 years, Scott Meyers' Effective C++ books (Effective C++, More
Effective C++, and Effective STL) have set the bar for C++ programming guidance.
His clear, engaging explanations of complex technical material have earned him a
worldwide following, keeping him in demand as a trainer, consultant, and confer-
ence presenter. He has a Ph.D. in Computer Science from Brown University.
PROGRAMMING/C++
US $49.99
ISBN: 978-1-491-90399-5
CAN $52.99
Twitter: @oreillymedia
facebook.com/oreilly
E
f
f
e
c
t
i
v
e
M
o
d
e
r
n
C
+
+
M
e
y
e
r
s
Effective
Modern C++
42 SPECIFIC WAYS TO IMPROVE YOUR USE OF C++11 AND C++14
Scott Meyers
Praise for Effective Modern C++
So, still interested in C++? You should be! Modern C++ (i.e., C++11/C++14)
is far more than just a facelift. Considering the new features, it seems that it’s
more a reinvention. Looking for guidelines and assistance? Then this book
is surely what you are looking for. Concerning C++, Scott Meyers was
and still is a synonym for accuracy, quality, and delight.
—Gerhard Kreuzer
Research and Development Engineer, Siemens AG
Finding utmost expertise is hard enough. Finding teaching perfectionism—
an author’s obsession with strategizing and streamlining explanations—is also difficult.
You know you’re in for a treat when you get to find both embodied in the same person.
Effective Modern C++ is a towering achievement from a consummate technical writer.
It layers lucid, meaningful, and well-sequenced clarifications on top of complex and
interconnected topics, all in crisp literary style. You’re equally unlikely to find a
technical mistake, a dull moment, or a lazy sentence in Effective Modern C++.
—Andrei Alexandrescu
Ph.D., Research Scientist, Facebook, and author of Modern C++ Design
As someone with over two decades of C++ experience, to get the most out of
modern C++ (both best practices and pitfalls to avoid), I highly recommend
getting this book, reading it thoroughly, and referring to it often!
I’ve certainly learned new things going through it!
—Nevin Liber
Senior Software Engineer, DRW Trading Group
Bjarne Stroustrup—the creator of C++—said, “C++11 feels like a new language.”
Effective Modern C++ makes us share this same feeling by clearly explaining
how everyday programmers can benefit from new features and idioms
of C++11 and C++14. Another great Scott Meyers book.
—Cassio Neri
FX Quantitative Analyst, Lloyds Banking Group
Scott has the knack of boiling technical complexity down to an understandable kernel.
His Effective C++ books helped to raise the coding style of a previous generation of C++
programmers; the new book seems positioned to do the same for those using modern C++.
—Roger Orr
OR/2 Limited, a member of the ISO C++ standards committee
Effective Modern C++ is a great tool to improve your modern C++ skills. Not only does it
teach you how, when and where to use modern C++ and be effective, it also explains why.
Without doubt, Scott’s clear and insightful writing, spread over 42 well-thought items,
gives programmers a much better understanding of the language.
—Bart Vandewoestyne
Research and Development Engineer and C++ enthusiast
I love C++, it has been my work vehicle for many decades now. And with
the latest raft of features it is even more powerful and expressive than I
would have previously imagined. But with all this choice comes the question
“when and how do I apply these features?” As has always been the case,
Scott’s Effective C++ books are the definitive answer to this question.
—Damien Watkins
Computation Software Engineering Team Lead, CSIRO
Great read for transitioning to modern C++—new C++11/14
language features are described alongside C++98, subject items are
easy to reference, and advice summarized at the end of each section.
Entertaining and useful for both casual and advanced C++ developers.
—Rachel Cheng
F5 Networks
If you’re migrating from C++98/03 to C++11/14, you need the eminently practical and
clear information Scott provides in Effective Modern C++. If you’re already writing
C++11 code, you’ll probably discover issues with the new features through Scott’s
thorough discussion of the important new features of the language. Either way, this book
is worth your time.
—Rob Stewart
Boost Steering Committee member (boost.org)
Effective Modern C++
Scott Meyers
Effective Modern C++
by Scott Meyers
Copyright © 2015 Scott Meyers. All rights reserved.
Printed in the Canada.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://safaribooksonline.com). For more information, contact our corporate/
institutional sales department: 800-998-9938 or corporate@oreilly.com.
Editor: Rachel Roumeliotis
Production Editor: Melanie Yarbrough
Copyeditor: Jasmine Kwityn
November 2014:
First Edition
Revision History for the First Edition
2014-11-07: First Release
Proofreader: Charles Roumeliotis
Indexer: Scott Meyers
Interior Designer: David Futato
Cover Designer: Ellie Volkhausen
Illustrator: Rebecca Demarest
See http://oreilly.com/catalog/errata.csp?isbn=9781491903995 for release details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Effective Modern C++, the cover image
of a Rose-crowned Fruit Dove, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the author have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the author disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.
978-1-491-90399-5
[TI]
For Darla,
black Labrador Retriever extraordinaire