Lo standard di C ++ è un documento normativo, che stabilisce regole che rimarranno (per lo più non interessate) nei documenti futuri. Pertanto, il comitato ha adottato un approccio molto cauto nei confronti dei suoi aggiornamenti.
Le aggiunte alla libreria standard sono state in qualche modo facili. Numerose biblioteche erano in Boost da molto tempo: era stato dimostrato che funzionavano.
Le aggiunte ai concetti di base nel linguaggio sono tuttavia molto più difficili da sperimentare, poiché richiede innanzitutto la modifica di un compilatore. Una funzione C ++ 03 (l'esportazione di modelli) era stata specificata senza il supporto del compilatore ... il risultato era orribile. Gli implementatori del frontend del compilatore EDG lo hanno segnalato come un compito enorme (diversi anni-uomo) con un guadagno molto scarso. Nessun altro compilatore ha mai provato a implementarlo. Non è una situazione comoda.
Funzionalità come constexpr
o static_assert
erano facili (e già emulate dalle librerie). Le lambda sono abbastanza ben comprese e implementate in una varietà di altre lingue, ci sono già state ampie ricerche, quindi era principalmente una questione di sintassi.
D'altra parte i concetti sono stati giudicati troppo nuovi e non testati . Sono stati appena specificati in tempo, non c'erano prove del concetto ... e quindi sono stati respinti, piuttosto che aspettarli (o fare un errore).
Perché non seguire D? Non si può dire che non lo farà. Il comitato ha incoraggiato le persone a ripensare da zero, senza scadenza urgente, e a provare a includerle in un compilatore per vedere come interagiscono con altre funzionalità della lingua. C'è in particolare la questione della separazione di concetti e mappe concettuali: dovrebbero essere raggruppati come uno o no?
FYI: Al momento esiste una filiale di Clang dedicata a questa sperimentazione, guidata da Larisse Voufo dell'Università dell'Indiana.