Das Buch C ++ Templates: The Complete Guide , (c) 2002, sieht für mich sehr ansprechend aus, aber da es 12 Jahre alt ist, befürchte ich, dass es veraltet sein könnte. Es gibt einige sehr günstige Amazon-Rezensionen, die noch vor einem Jahr datiert wurden, und ich sehe keine anderen sehr aktuellen Titel in C ++ - Vorlagen. Weiß jemand, ob ein 2002 veröffentlichtes Buch über Vorlagen (im Gegensatz zu einem Buch speziell über die STL) Syntax oder Konzepte enthält, die beispielsweise durch C ++ 11 ersetzt oder ergänzt wurden?
Folgendes stammt aus der Amazon-Buchbeschreibung :
Vorlagen gehören zu den leistungsstärksten Funktionen von C ++, werden jedoch zu oft vernachlässigt, missverstanden und missbraucht. C ++ - Vorlagen: Das vollständige Handbuch bietet Softwarearchitekten und -ingenieuren ein klares Verständnis dafür, warum, wann und wie Vorlagen verwendet werden, um sauberere, schnellere und intelligentere Software effizienter zu erstellen und zu warten.
C ++ - Vorlagen beginnen mit einem aufschlussreichen Tutorial zu grundlegenden Konzepten und Sprachfunktionen. Der Rest des Buches dient als umfassende Referenz und konzentriert sich zunächst auf Sprachdetails, dann auf eine breite Palette von Codierungstechniken und schließlich auf erweiterte Anwendungen für Vorlagen. Im gesamten Buch verwendete Beispiele veranschaulichen abstrakte Konzepte und zeigen Best Practices.
Leser lernen
- Das genaue Verhalten von Vorlagen
- So vermeiden Sie die mit Vorlagen verbundenen Fallstricke
- Redewendungen und Techniken, von den grundlegenden bis zu den zuvor nicht dokumentierten
- So verwenden Sie den Quellcode wieder, ohne die Leistung oder Sicherheit zu gefährden
- So steigern Sie die Effizienz von C ++ - Programmen
- So erstellen Sie flexiblere und wartbarere Software
Antworten:
Aktualisiert (24.08.2016)
Empfohlener Artikel mit Schwerpunkt auf C ++ 11:
Eine Einführung in das SFINAE-Konzept von C ++: Introspektion eines Klassenmitglieds zur Kompilierungszeit (Jean Guegant)
Als Anfänger der C ++ - Vorlagen-Metaprogrammierung vor einigen Monaten würde ich dennoch empfehlen, dieses Buch zu lesen.
Es enthält kein C ++ 11, enthält jedoch die Syntax und die C ++ - Spezifikationen, wie ein Compiler Vorlagencode verarbeiten soll. Das Buch behandelt viele weniger bekannte Ecken, die von entscheidender Bedeutung sind, wenn Sie C ++ - Vorlagen im Wesentlichen verwenden müssen, unabhängig davon, ob es sich um Metaprogrammierung handelt oder nicht.
Die fehlenden Teile von C ++ 11 sind:
is_*
wird angezeigt.decltype
. http://en.cppreference.com/w/cpp/language/decltypedeclval
. http://en.cppreference.com/w/cpp/utility/declvalmove
http://en.cppreference.com/w/cpp/utility/moveforward
http://en.cppreference.com/w/cpp/utility/forwardEs gibt ein Konstrukt, das häufig im Code angezeigt wird, der in Stackoverflow eingefügt wird :
std::enable_if
. In der Praxis finde ich dies jedoch aufgrund der One-Definition-Regel und der SFINAE ziemlich schwierig. Deshalb ist dieses Buch wichtig, weil es die Grundlagen behandelt.Wenn Sie C ++ - Vorlagen im Wesentlichen in einer plattformübergreifenden Bibliothek verwenden, müssen Sie Ihren Code in verschiedenen Compilern testen und kompilieren. Dies liegt daran, dass jeder Compiler die C ++ - Spezifikation unterschiedlich gut einhält. Code, der auf einem gut kompiliert wird, kann vom anderen abgelehnt werden, und gelegentlich ist der Compiler, der ihn akzeptiert, derjenige, der die Spezifikation verletzt.
Hier sind meine Lese-Notizen, wenn ich dieses Buch durcharbeite. Hoffe es wird hilfreich sein.
Anmerkungen zum Lesen von Büchern - C ++ - Vorlagen - The Complete Guide (2003)
Kapitel 5 und Kapitel 6 - Diese beiden Kapitel sind sehr deprimierend. Sie können es überspringen und dann zurückkehren, wenn Sie emotional bereit sind, Vorlagen zu verwenden.
Teil II (Ch 8 - Ch ???) Der Abschnitt über fortgeschrittene Sachen.
Kapitel 8 - Weitere Regeln
In Kapitel 8.3.1 (Seite 106 im 12. Druck) wird SFINAE zum ersten Mal erwähnt.
Kapitel 11 - Abzug von Vorlagenargumenten
Ab Kapitel 12.4 - Spezialisierung auf Teilklassenvorlagen.
Teil III (Ch 17 - Ch ???) Metaprogrammierung.
Kapitel 17 - Beginnt mit der Einführung in die funktionale Programmierung.
App. A.3 - One-Definition-Regel (ODR) im Detail.
quelle
constexpr
und daher TMP für alle Metaprogrammierungen empfiehlt, auch für Fälle, in denenconstexpr
Funktionen und Typen weitaus besser geeignet wären.