在发布新标准之前,C ++委员会是否使用某种原型编译器测试其新设计规范?还是他们发布了实际上只是理论性的标准,直到大型编译器实施为止?
boost::shared_ptr
=> std::shared_ptr
。
boost.lambda
=> C ++ 11 lambda表达式)的原型。
在发布新标准之前,C ++委员会是否使用某种原型编译器测试其新设计规范?还是他们发布了实际上只是理论性的标准,直到大型编译器实施为止?
boost::shared_ptr
=> std::shared_ptr
。
boost.lambda
=> C ++ 11 lambda表达式)的原型。
Answers:
在C ++标准委员会拥有章程和规则,但其中大部分都围绕着组织结构为中心,如何提交提案,表决,发布标准等,并没有那么多的标准本身或者它如何的技术细节可能经过测试。
据我所知,没有正式的条件来“测试”功能或其设计。C ++在某种程度上也具有独特之处,因为它没有引用或“主要”实现(例如Microsoft CLR,Oracle JDK,Zend PHP)。但是,委员会成员由许多对语言和编译器实现有深入了解的组织组成。例如,如果您单击该先前的链接,您将看到Microsoft和Intel的代表,他们都有受人尊敬的C ++编译器。Red Hat和其他为GCC做出贡献的公司也参与其中。
在提议一个新功能时,委员会成员已经对它是否可行,是否可能与其他功能冲突或是否使语法变得含糊不清,从而不必要地使解析复杂化了一个很好的主意。(这是一个有关C ++语法的好问题)
简短的回答是“不,委员会不需要使用原型测试其设计。” 但是,并不需要太多,因为委员会成员都是C ++的专家,他们了解大多数程序员所不了解的所有细节。请记住,这些人是语言架构师,他们是语言理论和编译器设计方面的专家。
考虑到编译器供应商在此过程中的参与,可以可行的是,他们中的一个或多个可以为新功能提供原型,但是同样,没有正式的要求,我也没有从编译器的公开文档中了解到这一点。 C ++委员会。
它们也往往非常保守,会逐步添加现实世界中有需求的新功能,而不指定大量可能被证明具有风险的新功能。实际上,近年来,他们已经添加了新功能,这些新功能已经存在于现实世界中,它们是专有扩展或开源库。例如,C ++ 11和C ++ 14包含Boost的各个部分,Boost已在多个编译器和执行环境的真实世界中进行了测试。无需测试已经测试过的东西。