"Modelli C ++: la guida completa" (c) 2002 - aggiornato con C ++ 11?

10

Il libro Modelli C ++: la guida completa , (c) 2002, mi sembra molto interessante, ma poiché ha 12 anni, sono preoccupato che potrebbe non essere aggiornato. Ci sono alcune recensioni Amazon molto favorevoli datate di recente come un anno fa, e non vedo altri titoli molto recenti su modelli C ++. Qualcuno sa se un libro sui modelli pubblicato nel 2002 (al contrario di un libro specifico sull'STL) avrebbe una sintassi o concetti che sono stati sostituiti o aggiunti, ad esempio, in C ++ 11?

Quanto segue è la descrizione del libro Amazon :

Templates are among the most powerful features of C++, but they are too often neglected, misunderstood, and misused. C++ Templates: The Complete Guide provides software architects and engineers with a clear understanding of why, when, and how to use templates to build and maintain cleaner, faster, and smarter software more efficiently.

C++ Templates begins with an insightful tutorial on basic concepts and language features. The remainder of the book serves as a comprehensive reference, focusing first on language details, then on a wide range of coding techniques, and finally on advanced applications for templates. Examples used throughout the book illustrate abstract concepts and demonstrate best practices.

Readers learn

  • The exact behaviors of templates
  • How to avoid the pitfalls associated with templates
  • Idioms and techniques, from the basic to the previously undocumented
  • How to reuse source code without threatening performance or safety
  • How to increase the efficiency of C++ programs
  • How to produce more flexible and maintainable software
    
posta Chap 03.01.2014 - 06:25
fonte

1 risposta

12

Aggiornato (2016/08/24)

Articolo consigliato con focus su C ++ 11:

Introduzione al concetto SFINAE di C ++: introspezione in fase di compilazione di un membro della classe (Jean Guegant)

Come studente di C ++ Template Metaprogramming alcuni mesi fa, consiglierei comunque di leggere questo libro.

Non include C ++ 11, ma espone la sintassi e le specifiche C ++ su come un compilatore dovrebbe elaborare il codice del template. Il libro copre molti angoli meno conosciuti che diventeranno cruciali se è necessario utilizzare i modelli C ++ in modo sostanziale, indipendentemente dal fatto che sia coinvolta o meno la metaprogrammazione.

Le parti mancanti da C ++ 11 sono:

  • Tipo di supporto per i tratti.
    • link
    • Per la navigazione, posiziona il mouse sopra "Tipo supporto" nella parte superiore della pagina. Verrà visualizzato un elenco di is_* .
  • %codice%. link
  • %codice%. link
  • decltype link
  • declval link

Esiste un costrutto che vedrai molto nel codice che viene incollato su Stackoverflow: move . Tuttavia, nella pratica, trovo questo piuttosto difficile da usare, a causa della Regola a una definizione e di SFINAE. Questo è il motivo per cui questo libro è importante, perché ripercorre le basi.

Se si utilizzano i modelli C ++ in modo sostanziale in una libreria multipiattaforma, è necessario testare il codice in diversi compilatori. Questo perché ogni compilatore ha un diverso livello di conformità alle specifiche C ++. Il codice che compila bene su uno può essere respinto dall'altro, e occasionalmente il compilatore che lo accetta è quello che rompe le specifiche.

Ecco le mie note di lettura quando passo questo libro. Spero che sarà utile.

Note per la lettura di libri - Modelli C ++ - La guida completa (2003)

  • Ch 2.5 - Modelli funzione - Riepilogo
    • Risoluzione del sovraccarico e best practice
  • Ch 3.3 - Specializzazione dei modelli di classe
  • Ch 3.4 - Specializzazione parziale
    • Ambiguità (errore ODR) e come risolverlo. ODR = Regola a definizione singola
  • Ch 4.3 - Limitazioni per i parametri modello non di tipo
    • Esempio: stringhe letterali con linkage esterno
  • Ch 5 e Ch 6 - Questi due capitoli sono molto deprimenti. Potresti voler saltarlo e tornare indietro quando sei emotivamente pronto per usare i modelli.

  • Parte II (Cap 8 - Ch ???) La sezione delle cose avanzate.

  • Ch 8 - Altre regole

    • Per un programmatore che abbia già familiarità con l'intero Ch 3 (modelli di classe - basi), i cap. 8.1 e 8.2 dovrebbero essere letti immediatamente dopo Ch 3, perché le regole aggiuntive sono altrettanto importanti e rilevanti delle regole di base. Ciò farà risparmiare un po 'di dolore.
  • Ch 8.3.1 (Pagina 106 in 12a ristampa) cita SFINAE per la prima volta.

  • Ch 8.3 - Questa sezione introduce molte circostanze in cui la sostituzione degli argomenti del template avrebbe portato a espansioni sintattiche prive di senso (e quindi diventate non valide, cosa che in cambio richiede SFINAE). Questo capitolo ha una curva di apprendimento ripida anche per i programmatori C ++ esperti.
  • Ch 11 - Detrazione degli argomenti del modello

    • Ch11 contiene alcuni esempi di Deduction di Argument Template deducibili che sono necessari per comprendere alcune delle applicazioni SFINAE ugualmente inventate.
  • Ch 12.4 in poi - Specializzazione del modello di classe parziale.

    • Questo copre la meccanica interna che viene spesso chiamata in un'applicazione SFINAE.

Parte III (Ch 17 - Ch ???) Metaprogramming.

  • Ch 17 - Inizia con la programmazione funzionale introduttiva.

  • App. A.3 - Regola ad una definizione (ODR) in dettaglio.

risposta data 03.01.2014 - 07:41
fonte

Leggi altre domande sui tag