Lo standard di C ++ è un documento normativo, che stabilisce regole che rimarranno (per lo più inalterate) nei documenti futuri. Pertanto la commissione ha adottato un approccio molto prudente per quanto riguarda i suoi aggiornamenti.
Le aggiunte alla libreria standard erano piuttosto facili. Un certo numero di librerie erano in Boost da molto tempo: era stato dimostrato che funzionavano.
Le aggiunte ai concetti chiave nella lingua sono tuttavia molto più difficili da sperimentare, perché prima richiede la modifica di un compilatore. Una funzione C ++ 03 (l'esportazione dei 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 (molti anni uomo) per un guadagno molto scarso. Nessun altro compilatore ha mai provato a implementarlo. Non è una situazione comoda.
Funzioni come constexpr
o static_assert
erano facili (e già emulate dalle librerie). Lambda è abbastanza ben capito e implementato in una varietà di altre lingue, c'è già stata una ricerca approfondita, quindi era principalmente una questione di sintassi.
D'altra parte i concetti sono stati giudicati anche nuovi e non utilizzati . Erano stati specificati a malapena in tempo, non c'erano state 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 scadenze urgenti, e a provare le loro mani a includerle in un compilatore per vedere come interagiscono con altre funzionalità nella lingua. C'è in particolare la questione della separazione di concetti e mappe concettuali: dovrebbero essere raggruppati come uno o no?
FYI: Attualmente esiste una branca di Clang dedicata a questa sperimentazione, guidata da Larisse Voufo dell'università dell'Indiana.