O Padrão de C ++ é um documento normativo, que define regras que permanecerão (principalmente não afetadas) nos documentos futuros. Portanto, o comitê adotou uma abordagem muito cautelosa em relação a suas atualizações.
As adições à biblioteca padrão foram um pouco fáceis. Várias bibliotecas estiveram no Boost por um longo tempo: foi provado que elas funcionavam.
Adições aos conceitos principais da linguagem, no entanto, são muito mais difíceis de serem experimentadas, porque primeiro é necessário modificar um compilador. Um recurso C ++ 03 (a exportação de modelos) havia sido especificado sem o suporte do compilador ... o resultado foi horrível. Os implementadores do front-end do compilador EDG relataram isso como uma tarefa massiva (vários homens-ano) com muito pouco ganho. Nenhum outro compilador tentou implementá-lo. Não é uma situação confortável.
Recursos como constexpr
ou static_assert
eram fáceis (e já emulados pelas bibliotecas). As lambdas são bastante bem compreendidas e implementadas em uma variedade de outras línguas, já houve uma extensa pesquisa, portanto era principalmente uma questão de sintaxe.
Por outro lado, os conceitos foram julgados muito novos e não experimentados . Eles mal foram especificados a tempo, não havia prova de conceito ... e, portanto, foram rejeitados, em vez de esperar por eles (ou cometer um erro).
Por que não seguir D? Não há como dizer que não. O comitê incentivou as pessoas a repensar do zero, sem prazo determinado, e tentar incluí-las em um compilador para ver como elas interagem com outros recursos do idioma. É notável a questão de separar conceitos e mapas conceituais: eles devem ser agrupados como um ou não?
FYI: Atualmente, existe um ramo de Clang dedicado a essa experimentação, liderado por Larisse Voufo da universidade de Indiana.