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++ ⓘ