Skip to content

Chapter Notes

Chapter 1: The Nature of the Beast

C++ feature

A key feature of C++ is the ability of programmers to create their own types, call user-defined types (UDTs), which can have the power and expressiveness of build-in types or fundamentals.

Chapter 3: The Origin Story

The importance of performance improvement

James Hamilton ... broke the costs down into servers, power distribution & colling, power, networking equipment, and other infrastructure. ... A 1% performance improvement in code will almost produce a 1% cost savings, which for a data center at scale will be a significant amount of money. Reference

C++ Tooling

  • Clang & LLVM
    • such as various kinds of sanitiziers.
    • Clang's own standard library implementation: libc++
  • Metashell is an interactive environment for template metaprogramming
  • American fuzzy lop is a security-oriented fuzzer that users code-coverage information from the binary under test to guide its generation of test cases.
  • DXR is a source code indexer for large code bases by Mozilla

Chapter 4: The Beast Roars Back

  • Clang as the latest import new tool.
  • Osv is an operating system written in C++ and optimized for Cloud.
  • Standard C++ Foundation, see also C++ ISO Faq
  • Bjarne Stroustrup's FAQ
  • Conferences
    • C++Now
    • CppCon
    • Meeting C++
    • BoostCon
  • Videos
    • CppCon, BoostCon, Meeting C++ all have official Youtube channel
    • Channel 9: C9::GoingNative

Chapter 5: Digging Deep on Modern C++

  • Type Inference: auto and decltype. (see uniq.cc, lenminmax.cc)
  • Move Semantics (see uniq.cc)
  • No More Output Parameteres, multiple return and structured binding (see lenminmax.cc)
  • Inner Function with Lambdas (see merge_sort.cc)
  • Lambdas as a Scope with a Return Value (see producer_consumer.cc)

Chapter 6: The Future of C++

C++ Working Groups

  • Concurrency
  • Modules
  • File System
    • work based on Boost.Filesystem v3.
  • Networking (inactive)
    • TS: A small set of network-related libraries
  • Transactional Memory
  • Numerics
  • Reflection
  • Concepts
  • Range
  • Feature Test
  • Database (inactive, handed by the Library Evolution working group)
  • Undefined and Unspecified Behaviors
  • I/O
  • Library Evolution