Il C ++ non aveva uno standard ISO fino a dopo la sua creazione. Gran parte della sua vita iniziale era frammentata, con i compilatori che lavoravano in modo diverso al punto di essere a volte incompatibili con la fonte.
Il primo standard C ++ era C ++ 98, con aggiornamenti relativamente minori nello standard C ++ 03. L'obiettivo principale di questi standard era quello di prendere il "selvaggio west" del C ++ e portargli una parvenza di ordine. Una volta che la polvere si è risolta e gli sviluppatori hanno superato le modifiche, il comitato C ++ si concentrerà sulle nuove funzionalità.
Dallo stesso Bjarne Stroustrup (alcune parentesi vengono rimosse per brevità), Il linguaggio di programmazione C ++ (4a edizione) , sezione 1.4 .4 "Lo standard del 2011":
The current C++, C++11, known for years as C++0x, is the work of the
members of WG21. The committee worked under increasingly onerous
self-imposed processes and procedures. These processes probably led to
a better (and more rigorous) specification, but they also limited
innovation. An initial draft standard for public review was produced
in 2009. The second ISO C++ standard was ratified by a 21-0 national
vote in August 2011.
One reason for the long gap between the two standards is that most
members of the committee (including me) were under the mistaken
impression that the ISO rules required a "waiting period" after a
standard was issued before working on new features. Consequently,
serious work on new language features did not start until 2002.
Il C ++ non fu nemmeno standardizzato fino al 1998, e i prossimi anni furono impiegati per correggere gli errori nello standard (nuovo) esistente. Quindi il comitato si è seduto sulle sue mani per un paio di anni a causa di problemi procedurali che probabilmente non sarebbero stati necessari. Ci sono voluti sette anni dall'avvio iniziale a un documento pubblico, con molte discussioni e modifiche lungo la strada. Anche allora, ci sono voluti altri due anni prima che il documento fosse nella posizione di essere votato e ratificato.
Ciò significa che l'aggiunta di lambda e altre funzionalità linguistiche ha dovuto attendere la stabilizzazione dello status quo (1998/2003), quindi la politica e le procedure del processo hanno trascinato l'aggiunta di nuove funzionalità molto più a lungo di quanto fosse probabilmente necessario a (2011).
Un altro motivo per la mancanza di urgenza è che i functors possono fare quasi tutto ciò che un lambda può fare, sono solo più verbose. La lingua nel suo complesso non mancava molto oltre alla brevità dei lambda e alla loro capacità di legarsi a variabili locali. Tuttavia, anche questo può essere per lo più risolto aggirando i riferimenti nel functor.