Alguém da audiência fez uma pergunta durante a palestra "C ++ Standard Library Panel" na CppCon 2016 ( YouTube ) sobre o potencial do nome experimental
para assustar os usuários e evitar que usem qualquer coisa dentro do namespace:
Vocês consideram a produção [o conteúdo do std::experimental
namespace] pronto e esse é um argumento que pode ser feito, [que] está efetivamente pronto para a produção pelos próximos 3 anos, e talvez você tenha que mudar seu código 3 anos depois, talvez?
Michael Wong (presidente do SG5 e SG14 e editor do Concurrency TS) respondeu à pergunta primeiro:
Acho que há um forte consenso dentro do comitê de que está praticamente pronto para produção. Como eu disse antes, na maioria dos casos, 99% dele é descartado. Queremos ter certeza de que não é um impedimento para você usá-lo. Você pode entender porque queremos colocar grandes recursos, grandes grupos de recursos, em tal contexto, de modo que não perturbe o resto do sistema de biblioteca inteiro, mas também torna mais fácil para você usá-lo. Agora você pode ativar o GCC com um sinalizador específico para Conceitos, você sabe, que na verdade torna mais fácil para você segmentá-lo.
Alisdair Meredith (ex-presidente do LWG) então acompanhou:
Vou assumir a posição contrária aqui. Uma das coisas que Herb [Sutter] disse como organizador do WG21, o grupo padrão, quando começamos o caminho dos TSes é que ele não achava que os TSes teriam sucesso até que não trouxéssemos algo adiante, porque significa que não estamos sendo experimentais o suficiente, não estamos sendo ambiciosos o suficiente no que estamos usando os TSes. Nós realmente queremos issoexperimental
para ser uma dica de que, sim, essas coisas estão sujeitas a mudanças, não estamos vinculados a isso e podemos errar. Isso é para diminuir nossa barreira para as coisas que consideramos ser tão ambiciosas e abrangentes quanto podemos [...] Agora o padrão parece estar em um ciclo de lançamento de três anos, devemos ser muito mais ambiciosos em colocar recursos realmente experimentais no TS, e talvez avançando as coisas mais rapidamente no próprio padrão principal. Mas, novamente, este será um tópico divertido para discutirmos nas próximas reuniões [do comitê padrão C ++].
Stephan T. Lavavej (mantenedor da implementação STL da Microsoft) foi o último a responder:
É importante fazer uma distinção entre a experimentalidade da interface e a experimentalidade da implementação, porque quando você diz "produção pronta", o que isso significa? Normalmente, "pronto para produção", você pensaria nisso falando sobre a implementação. É bem possível que uma implementação [de algo em std::experimental
] seja absolutamente [...] à prova de balas. [...] Algo como [...] o <random>
cabeçalho em TR1, [era] muito, muito bom em TR1, e você poderia ter uma implementação absolutamente à prova de balas disso, mas descobriu-se que a interface agitou substancialmente [antes do lançamento do] C ++ 11 e [...] se soubéssemos naquela época o que fazemos agora, colocar um experimental
teria sido um sinal melhor para as pessoas: "Ei, talvez você não queira usarstd::experimental::variate_generator
porque, ha-ha, vai desaparecer no C ++ 11 ".
Portanto, parece que há algum desejo entre os desenvolvedores de biblioteca padrão e membros do comitê de que, pelo menos no futuro, o conteúdo do std::experimental
namespace seja verdadeiramente "experimental" por natureza, e não deve ser dado como certo que algo std::experimental
será torná-lo no padrão C ++.
E não, tanto quanto eu entendo, depende dos fornecedores de bibliotecas padrão se eles fornecem implementações para os vários recursos internos std::experimental
.