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 (13)

How this entity was disambiguated

Statements (71)

Predicate Object
instanceOf book
programming book
author Scott Meyers
countryOfPublication United States
describedAs guide to effective use of C++11 and C++14 features
focusesOn C++11
C++14
linked to: C++
hasPart Item 10: Prefer scoped enums to unscoped enums
Item 11: Prefer deleted functions to private undefined ones
Item 12: Declare overriding functions override
Item 13: Prefer const_iterators to iterators
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
Item 17: Understand special member function generation
Item 18: Use std::unique_ptr for exclusive-ownership resource management
Item 19: Use std::shared_ptr for shared-ownership resource management
Item 1: Understand template type deduction
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
Item 22: When using the Pimpl idiom, define special member functions in the implementation file
Item 23: Understand std::move and std::forward
Item 24: Distinguish universal references from rvalue references
Item 25: Use std::move on rvalue references, std::forward on universal references
Item 26: Avoid overloading on universal references
Item 27: Familiarize yourself with alternatives to overloading on universal references
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
Item 30: Familiarize yourself with perfect forwarding failure cases
Item 31: Avoid default capture modes
Item 32: Use init capture to move objects into closures
Item 33: Use decltype on auto&& parameters to std::forward them
Item 34: Prefer lambdas to std::bind
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
linked to: RAII

Item 38: Be aware of varying thread handle destructor behavior
linked to: RAII

Item 39: Consider void futures for one-shot event communication
Item 3: Understand decltype
Item 40: Use std::atomic for concurrency, volatile for special memory
Item 41: Consider pass by value for copyable parameters that are cheap to move and always copied
Item 42: Consider emplacement instead of insertion
Item 4: Know how to view deduced types
Item 5: Prefer auto to explicit type declarations
Item 6: Use the explicitly typed initializer idiom when auto deduces undesired types
Item 7: Distinguish between () and {} when creating objects
Item 8: Prefer nullptr to 0 and NULL
Item 9: Prefer alias declarations to typedefs
language English
notableFor focus on modern C++ idioms and best practices
item-based guidelines format
numberOfItems 42 guidelines
predecessor Effective C++
Effective STL
More Effective C++
programmingLanguage C++
publicationYear 2014
publisher O’Reilly Media
linked to: O'Reilly Media
series Effective C++ series
linked to: Effective C++
subjectArea C++ programming language
linked to: C++

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 (16)

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++
Effective Modern C++ hasPart Item 6: Use the explicitly typed initializer idiom when auto deduces undesired types
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 13: Prefer const_iterators to iterators
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 19: Use std::shared_ptr for shared-ownership resource management
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 21: Prefer std::make_unique and std::make_shared to direct use of new
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 23: Understand std::move and std::forward
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 24: Distinguish universal references from rvalue references
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 25: Use std::move on rvalue references, std::forward on universal references
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 26: Avoid overloading on universal references
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 27: Familiarize yourself with alternatives to overloading on universal references
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 30: Familiarize yourself with perfect forwarding failure cases
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 33: Use decltype on auto&& parameters to std::forward them
linked to: Effective Modern C++
Effective Modern C++ hasPart Item 40: Use std::atomic for concurrency, volatile for special memory
linked to: Effective Modern C++
More Effective C++ relatedWork Effective Modern C++