Effective Modern C++

E679899

Effective Modern C++ is a widely respected programming book that guides experienced C++ developers in using modern C++11 and C++14 features effectively, idiomatically, and safely.

All labels observed (1)

Label Occurrences
Effective Modern C++ canonical 3

How this entity was disambiguated

Statements (71)

Predicate Object
instanceOf book
programming book
author Scott Meyers NERFINISHED
countryOfPublication United States of America
surface form: United States
describedAs guide to effective use of C++11 and C++14 features
focusesOn C++11
C++14 NERFINISHED
hasPart Item 10: Prefer scoped enums to unscoped enums NERFINISHED
Item 11: Prefer deleted functions to private undefined ones NERFINISHED
Item 12: Declare overriding functions override
Item 13: Prefer const_iterators to iterators NERFINISHED
Item 14: Declare functions noexcept if they won’t emit exceptions
Item 15: Use constexpr whenever possible
Item 16: Make const member functions thread safe NERFINISHED
Item 17: Understand special member function generation NERFINISHED
Item 18: Use std::unique_ptr for exclusive-ownership resource management
Item 19: Use std::shared_ptr for shared-ownership resource management NERFINISHED
Item 1: Understand template type deduction NERFINISHED
Item 20: Use std::weak_ptr for std::shared_ptr-like pointers that can dangle
Item 21: Prefer std::make_unique and std::make_shared to direct use of new NERFINISHED
Item 22: When using the Pimpl idiom, define special member functions in the implementation file
Item 23: Understand std::move and std::forward NERFINISHED
Item 24: Distinguish universal references from rvalue references NERFINISHED
Item 25: Use std::move on rvalue references, std::forward on universal references NERFINISHED
Item 26: Avoid overloading on universal references NERFINISHED
Item 27: Familiarize yourself with alternatives to overloading on universal references NERFINISHED
Item 28: Understand reference collapsing
Item 29: Assume that move operations are not present, not cheap, and not used
Item 2: Understand auto type deduction NERFINISHED
Item 30: Familiarize yourself with perfect forwarding failure cases NERFINISHED
Item 31: Avoid default capture modes NERFINISHED
Item 32: Use init capture to move objects into closures NERFINISHED
Item 33: Use decltype on auto&& parameters to std::forward them NERFINISHED
Item 34: Prefer lambdas to std::bind NERFINISHED
Item 35: Prefer task-based programming to thread-based
Item 36: Specify std::launch::async if asynchronicity is essential
Item 37: Make std::threads unjoinable on all paths NERFINISHED
Item 38: Be aware of varying thread handle destructor behavior NERFINISHED
Item 39: Consider void futures for one-shot event communication NERFINISHED
Item 3: Understand decltype
Item 40: Use std::atomic for concurrency, volatile for special memory NERFINISHED
Item 41: Consider pass by value for copyable parameters that are cheap to move and always copied NERFINISHED
Item 42: Consider emplacement instead of insertion NERFINISHED
Item 4: Know how to view deduced types NERFINISHED
Item 5: Prefer auto to explicit type declarations NERFINISHED
Item 6: Use the explicitly typed initializer idiom when auto deduces undesired types NERFINISHED
Item 7: Distinguish between () and {} when creating objects NERFINISHED
Item 8: Prefer nullptr to 0 and NULL
Item 9: Prefer alias declarations to typedefs NERFINISHED
language English
notableFor focus on modern C++ idioms and best practices
item-based guidelines format
numberOfItems 42 guidelines
predecessor Effective C++ NERFINISHED
Effective STL NERFINISHED
More Effective C++ NERFINISHED
programmingLanguage C++
publicationYear 2014
publisher O’Reilly Media NERFINISHED
series Effective C++ series NERFINISHED
subjectArea C++ programming language NERFINISHED
software development
software engineering
targetAudience experienced C++ developers
professional programmers
usesConcept concurrency
lambda expressions
move semantics
perfect forwarding
smart pointers
type deduction

How these facts were elicited

Referenced by (3)

Full triples — surface form annotated when it differs from this entity's canonical label.

Scott Meyers knownFor Effective Modern C++
Scott Meyers notableWork Effective Modern C++
Effective software development series hasPart Effective Modern C++