Sono curioso: la programmazione generica (GP) è molto usata nell'industria?
Dipende molto dal contesto del team e dal progetto.
Ad esempio, nei videogiochi, spesso il codice è il "più semplice" possibile (e talvolta anche troppo semplice) ma in architetture di grandi dimensioni. Questo perché gli sviluppatori di giochi hanno molti problemi da risolvere e non vogliono preoccuparsi della meta-programmazione (che è un linguaggio separato molto astratto e difficile da comprendere all'interno del C ++).
Allo stesso tempo, l'uso di base dei modelli è comune anche in quei negozi e puoi vedere alcune ottimizzazioni basate su modelli in alcune funzioni molto specifiche di alcuni motori.
Ma negli sviluppatori di giochi, la maggior parte delle persone eviterà qualsiasi metaprogrammazione.
Ora, dall'altro lato estremo, alcune applicazioni di elaborazione molto complesse o pesanti, che non sono comuni, richiedono una sorta di metaprogrammazione pesante a causa di requisiti di prestazioni e flessibilità (al momento della compilazione) che non sono comuni. Sto lavorando in uno adesso.
Non è comune ma esiste e alcuni domini di nicchia (in alcuni contesti integrati scientifici o che scricchiolano i numeri) richiedono che le persone sappiano molto sulla metaprogrammazione o che desiderino imparare.
Nel mezzo, la maggior parte delle persone utilizzerà il meta-proggramming come "client", non come "designer". La maggior parte del codice di meta-programmazione sono raggruppati in librerie perché le librerie sono strumenti per il codice e cosa c'è di meglio di una libreria in grado di adattarsi ai tipi personalizzati con cui hai lavorato fino ad ora?
Boost (http://boost.org) è un insieme di librerie, alcune fatte di pesante metaprogrammazione della magia nera, e sono usate in molti negozi C ++ come "STL ++", un'estensione dell'STL (e lo è). Non tutti i negozi lo usano per diversi motivi, come la compatibilità del compilatore (alcune librerie di boost possono far perdonare il compilatore ogni volta che ha ferito il tuo sentimento ...) e più spesso perché ad alcuni sviluppatori non piace non essere in grado di capire come funziona uno strumento all'interno (prova a capire Boost.Spirit ...)
Qualunque sia la società per la quale lavorerai, alcuni useranno questo paradigma, altri meno o per niente o addirittura li proibiranno.
Non c'è consenso perché nessuno ha gli stessi bisogni, contesto o squadra.
Ma ovviamente, è usato. Forse chiedi a chi usa boost sulla loro mailing list per avere più esempi del mondo reale?