Une personne du public a posé une question lors de la conférence «C ++ Standard Library Panel» à la CppCon 2016 ( YouTube ) sur le potentiel du nom experimental
à dissuader les utilisateurs d'utiliser quoi que ce soit dans l'espace de noms:
Est-ce que vous considérez [le contenu de l' std::experimental
espace de noms] comme une production prête et est-ce un argument qui peut être avancé, [que] c'est effectivement prêt pour la production pour les 3 prochaines années, et peut-être devrez-vous changer votre code 3 ans plus tard, peut-être?
Michael Wong (président de SG5 et SG14 et rédacteur en chef du Concurrency TS) a répondu en premier à la question:
Je pense qu'il y a un fort consensus au sein du comité sur le fait que la production est pratiquement prête. Comme je l'ai déjà dit, dans la plupart des cas, 99% de celui-ci est largué par avion. Nous voulons nous assurer que ce n'est pas un obstacle pour que vous puissiez l'utiliser. Vous pouvez comprendre pourquoi nous voulons mettre de grandes fonctionnalités, de grands groupes de fonctionnalités, dans un tel contexte, afin que cela ne perturbe pas le reste de l'ensemble du système de bibliothèque, mais cela vous facilite également son utilisation. Vous pouvez maintenant activer GCC avec un indicateur spécifique pour les concepts, vous savez, cela vous permet en fait de le segmenter plus facilement.
Alisdair Meredith (ancien président du LWG) a ensuite suivi:
Je vais prendre la position contraire ici. Une des choses que Herb [Sutter] a dit en tant qu'organisateur du WG21, le groupe standard, lorsque nous nous sommes lancés sur la voie des TS, c'est qu'il ne pensait pas que les TS auraient réussi tant que nous n'aurions pas réussi à faire avancer quelque chose, car cela Cela signifie que nous ne sommes pas assez expérimentaux, que nous ne sommes pas assez ambitieux dans l'utilisation des TS. Nous voulons vraiment çaexperimental
pour indiquer que, oui, ces choses sont sujettes à changement, nous ne sommes pas contraignants à cela, et nous pouvons nous tromper. C'est pour abaisser notre barrière pour les choses que nous considérons comme aussi ambitieuses et atteindre que nous pouvons [...] Maintenant que la norme semble être sur un cycle de publication de trois ans, nous devrions être beaucoup plus ambitieux en mettant des fonctionnalités vraiment expérimentales dans le TS, et peut-être faire avancer les choses plus rapidement dans la norme principale elle-même. Mais encore une fois, ce sera un sujet amusant pour nous de discuter lors des prochaines réunions [du comité de normalisation C ++].
Stephan T.Lavavej (responsable de l'implémentation STL de Microsoft) a été le dernier à répondre:
Il est important de faire une distinction entre le caractère expérimental de l'interface et le caractère expérimental de l'implémentation, car quand vous dites «production prête», qu'est-ce que cela signifie? Habituellement, «prêt pour la production», vous penseriez à cela en parlant de la mise en œuvre. Il est tout à fait possible qu'une implémentation [de quelque chose en std::experimental
] soit absolument [...] à l'épreuve des balles. [...] Quelque chose comme [...] l'en- <random>
tête de TR1, [c'était] vraiment, vraiment sympa dans TR1, et vous auriez pu avoir une implémentation absolument à toute épreuve de cela, mais il s'est avéré que l'interface a tourné substantiellement [avant la sortie de] C ++ 11 et [...] si nous savions à l'époque ce que nous faisons maintenant, mettre un experimental
message aurait été un meilleur signal pour les gens: utilisationstd::experimental::variate_generator
parce que, ha-ha, il va disparaître en C ++ 11 ".
Il semble donc que les développeurs de bibliothèques standard et les membres du comité souhaitent que, à l’avenir du moins, le contenu de l’ std::experimental
espace de nom soit de nature véritablement «expérimentale», et il ne devrait pas être tenu pour acquis que quelque chose dans std::experimental
sera en faire le standard C ++.
Et non, pour autant que je sache, c'est aux fournisseurs de bibliothèques standard de décider s'ils fournissent des implémentations pour les différentes fonctionnalités à l'intérieur std::experimental
.