Errata

S. 53 Listing ganz unten: Es muss cin >> a; heißen.

S. 71 Abschnitt if constexpr: Ersetze den Nebensatz "wenn wahrheitswert schon zur Compilationszeit bekannt ist" durch "wenn wahrheitswert wahr ist. wahrheitswert muss schon zur Compilationszeit bekannt sein"

S. 76 Mitte: n darf natürlich nicht const oder constexpr sein!

S. 85, Abbildung 1.14: Nach class fehlt der (optionale) Typname, unter dem die Aufzählung danach angesprochen werden kann (vgl. Abb. 1.15 auf S. 88).

S. 86, nach 2/3 der Seite. Richtig ist: Wochentag::montag = morgen;      // Fehler (montag ist Konstante)
(Wochentag:: fehlt am Anfang der Zeile)

S. 165, Mitte. In der Zeile "Das Listing 2.54..." das Wort hello durch grussmodul ersetzen.

S. 184, Übung 3.1: neuer Name muss zusammengeschrieben werden.

S. 190-191, Listing 3.27: 1. std::endl ist überflüssig, weil cerr eine ungepufferte Ausgabe bewirkt. 2. Die Anweisung radius = r; muss nach der if-Anweisung stehen!

S. 192 unten, Anmerkung zu Zeile 22, letzter Satz: Statt temp muss es kreis heißen.

S. 329, Listing 6.27: Streichen Sie die Implementierung der Funktion flaeche(), damit das Listing dem Text auf S. 328 entspricht. Die Funktionsdefinition bewirkt, dass die Klasse nicht mehr abstrakt ist, wie behauptet.

S. 330, 1. Zeile: Ersetze string_view durch string.

S. 332 Mitte. Den ersten Satz ersetzen durch: "Auf welches Subobjekt soll der Zeiger zeigerAufGrafischeObjekte[2] in Listing 6.30 verweisen?"

S. 333, Listing 6.33: Der Parameter für string_view muss einen anderen Namen haben, etwa beschriftung, der dann auch bei der Initialisierung von BeschriftetesObjekt verwendet wird. In den downloadbaren Beispielen ist es korrekt.

S. 379, Abbildung 8.4: const muss wie explicit optional sein. In der Praxis wird ein Typumwandlungsoperator jedoch immer const sein.

S. 441 oben, Listing 9.19: Die catch-Klausel muss lauten:
catch (const UngueltigesDatumException& e) { cerr << e.what() << " Abbruch!" << '\n'; }
Das gilt auch für die Datei cppbuch/k9/datum/main.cpp

S. 578: Zeile 29 im Listing streichen.

S. 702: Listing 23.1: Bitte fügen Sie vor der return-Anweisung die folgenden Zeilen ein:
if(start < s.size()) { // ggf. verbleibenden Rest anhängen
  ergebnis.emplace_back(s.substr(start, s.size()));
}

S. 852, 2. Absatz: Mitte. Den ersten Satz "Die äußeren ..." streichen. C++11 erforderte zwei Klammerebenen, seit C++14 genügt eine.

S. 960, Lösung zu 3.2: Die in der Aufgabe genannten Voraussetzungen wurden nicht eingehalten. Die erste Funktion muss lauten:
Rational add(long a, Rational b) {
  Rational summand(a, 1);
  b.add(summand);
  return b;
}

Auf Seite 961 oben entsprechend
Rational add(long a, Rational b) {
  b.add(Rational(a, 1));
  return b;
}

S. 963, Lösung zu 6.3: Ersetze diePersonen[0] durch diePersonen[0].get()