在CppCon 2016(YouTube)上的“ C ++标准库专家组”演讲中,听众中有人提出了一个问题,即该名称可能使experimental
用户害怕使用命名空间中的任何内容:
你们是否认为[std::experimental
名称空间的内容]生产已经准备就绪,是否可以提出一个论点,[它]在接下来的3年内有效地准备生产,也许您必须在3年后更改代码?
Wong(SG5和SG14主席以及Concurrency TS的编辑)首先提出了这个问题:
我认为委员会内部已经就生产准备就绪达成了强烈共识。正如我之前说过的,在大多数情况下,有99%的空气会掉进去。您可以理解为什么我们要在这样的上下文中放置大型功能,大型功能组,以免打扰整个图书馆系统的其余部分,但也使您更轻松地使用它。现在,您可以使用一个特定的Concepts标志打开GCC,您知道,这实际上使您更容易将其细分。
随后,Alisdair Meredith(LWG的前任主席)进行了跟进:
我将在这里采取相反的立场。作为标准工作组WG21的召集人,赫伯[萨特]说的一件事是,当我们确定TSes的发展方向时,他认为TSes不会成功,除非我们未能提出建议。意味着我们还没有足够的实验性,对于我们使用TS的目的没有足够的野心。我们确实希望experimental
暗示是的,这些事情可能会发生变化,我们没有约束力,我们可能会出错。这是为了降低我们认为雄心勃勃且可以达到的事物的壁垒。现在,该标准似乎处于三年发布周期,我们应该更加雄心勃勃地投入真正的实验性功能进入TS,也许可以更快地将其推进到主要标准本身。但是,对于我们在接下来的几次[C ++标准委员会]会议上进行讨论,这将是一个有趣的话题。
Stephan T. Lavavej(Microsoft STL实现的维护者)最后回应:
区分接口的实验性和实现的实验性很重要,因为当您说“生产就绪”时,这意味着什么?通常,“准备就绪”时,您会想到有关实现的内容。…中的某些实现完全有可能std::experimental
是防弹的。[...]类似于<random>
TR1中的标头,在TR1中确实非常好,并且您可能对此有绝对的防弹实现,但事实证明该接口混乱了在[...] C ++ 11发行之前和[...]如果我们早就知道现在该怎么做,则在experimental
向人们发出更好的信号时说:“嘿,也许您不想使用std::experimental::variate_generator
因为,哈哈,它将在C ++ 11中消失”。
因此,似乎标准库开发人员和委员会成员之间存在某种愿望,至少在将来,std::experimental
命名空间的内容本质上应该是真正的“实验性”,不应将某些std::experimental
遗嘱视为理所当然。使其成为C ++标准。
据我了解,不,这取决于标准库供应商是否为其提供各种功能的实现std::experimental
。