Qualcuno del pubblico ha posto una domanda durante il discorso "C ++ Standard Library Panel" al CppCon 2016 ( YouTube ) sul potenziale per il nome experimental
di spaventare gli utenti dall'usare qualsiasi cosa all'interno dello spazio dei nomi:
Ragazzi, considerate [il contenuto dello std::experimental
spazio dei nomi] pronto per la produzione e questo è un argomento che può essere fatto, [che] è effettivamente pronto per la produzione per i prossimi 3 anni, e forse dovete cambiare il vostro codice 3 anni dopo, forse?
Michael Wong (presidente di SG5 e SG14 ed editore di Concurrency TS) ha risposto per primo alla domanda:
Penso che ci sia un forte consenso all'interno del comitato sul fatto che sia praticamente pronta per la produzione. Come ho detto prima, nella maggior parte dei casi il 99% di esso viene scaricato nell'aria. Vogliamo assicurarci che non sia un impedimento per il tuo utilizzo. Puoi capire perché vogliamo mettere grandi funzionalità, grandi gruppi di funzionalità, in un tale contesto, in modo che non disturbi il resto dell'intero sistema bibliotecario, ma ti renda anche più facile usarlo. Ora puoi attivare GCC con un flag specifico per Concepts, sai, che in realtà ti rende più facile segmentarlo.
Alisdair Meredith (ex presidente del LWG) ha poi seguito:
Prenderò la posizione contraria qui. Una delle cose che Herb [Sutter] ha detto come convener del WG21, il gruppo standard, quando ci siamo incamminati lungo il sentiero dei TS è che non pensava che i TS avrebbero avuto successo finché non avessimo fallito nel portare avanti qualcosa, perché significa che non siamo abbastanza sperimentali, non siamo abbastanza ambiziosi in ciò per cui stiamo usando i TS. Lo vogliamo davveroexperimental
per essere un suggerimento che, sì, queste cose sono soggette a cambiamento, non siamo vincolanti a questo e possiamo sbagliare. Questo per abbassare la nostra barriera per le cose che consideriamo ambiziose e raggiungere il più possibile [...] Ora lo standard sembra essere su un ciclo di rilascio di tre anni, dovremmo essere molto più ambiziosi nel mettere funzionalità davvero sperimentali nella ST, e forse facendo avanzare le cose più rapidamente nello standard principale stesso. Ma ancora una volta, questo sarà un argomento divertente da discutere durante le prossime riunioni [del comitato standard C ++].
Stephan T. Lavavej (manutentore dell'implementazione STL di Microsoft) è stato l'ultimo a rispondere:
È importante tracciare una distinzione tra la sperimentalità dell'interfaccia e la sperimentalità dell'implementazione, perché quando dici "produzione pronta", cosa significa? Di solito, "pronto per la produzione", ci si potrebbe pensare parlando dell'implementazione. È abbastanza possibile che un'implementazione [di qualcosa in std::experimental
] sia assolutamente [...] a prova di proiettile. [...] Qualcosa come [...] l' <random>
intestazione in TR1, [era] davvero, davvero carino in TR1, e avresti potuto avere un'implementazione assolutamente a prova di proiettile di quello, ma si è scoperto che l'interfaccia si alterava sostanzialmente [prima del rilascio di] C ++ 11 e [...] se allora avessimo saputo cosa facciamo ora, inserire un experimental
segnale sarebbe stato un segnale migliore per le persone che "Ehi, forse non vuoi usostd::experimental::variate_generator
perché, ah-ah, scomparirà in C ++ 11 ".
Così sembra che ci sia qualche desiderio tra gli sviluppatori della libreria standard e membri del comitato che, in futuro, almeno, il contenuto del std::experimental
namespace dovrebbero essere veramente "sperimentale" in natura, e non dovrebbe essere dato per scontato che qualcosa nel std::experimental
testamento trasformalo nello standard C ++.
E no, per quanto ne so, spetta ai fornitori di librerie standard decidere se fornire implementazioni per le varie funzionalità all'interno std::experimental
.