可能的重复:
您今天使用 C++0x 的情况如何? https://stackoverflow.com/questions/1754397/how-are-you-using-c0x-today
我正在与一个团队合作开发一个相当新的系统。我们正在讨论迁移到 MSVC 2010,并且我们已经迁移到 GCC 4.5。这些是我们使用的唯一编译器,我们不打算很快将我们的代码移植到不同的编译器。
我建议在我们这样做之后,我们开始利用一些已经提供的 C++0x 功能,例如 auto.我的同事建议反对这一点,建议等到“C++0x 真正成为标准”。我不得不不同意,但我可以从他的措辞中看到吸引力。尽管如此,我还是忍不住认为这种反驳更多地是出于对学习 C++0x 的恐惧和恐惧,而不是对标准化的真正关注。
鉴于系统的新状态,我希望我们能够利用可用的新技术。例如,仅仅使用 auto 就可以让我们的日常生活变得更轻松(例如,只需编写基于迭代器的 for 循环,直到出现基于范围的循环)。
我这样想有错吗?我并不是建议我们从根本上改变我们刚刚萌芽的代码库,而是开始在方便的地方使用 C++0x 功能。我们知道我们正在使用什么编译器,并且没有立即移植的计划(如果我们移植代码库,那么到那时编译器肯定也将可用于目标平台)。否则,在我看来,就像在 1997 年避免使用 iostream 一样,只是因为 ISO C++ 标准尚未发布,尽管所有编译器都已经以可移植的方式提供了它们。
如果你们都同意,你能给我提供一些可以用来加强我的立场的论据吗?如果没有,我能否获得有关“直到 C++0x 成为标准”想法的更多详细信息?顺便说一句,有人知道那是什么时候吗?
我会根据每个功能做出决定。
请记住,标准是really即将完成。剩下的就是投票、修复错误和更多投票。
所以一个简单的功能就像auto
不会消失,也不会改变其语义。那么为什么不使用它呢。
Lambda 足够复杂,以至于它们的措辞可能会发生变化,并且一些极端情况下的语义也会得到一些修复,但总的来说,它们的行为方式将与今天相同(尽管 VS2010 在范围方面存在一些错误)对于捕获的变量,MS 已声明它们是错误,因此可能会在主要产品版本之外修复)。
如果您想安全起见,请远离 lambda。否则,请在方便的地方使用它们,但要避免超级棘手的情况,或者准备好在标准最终确定时检查 lambda 的使用情况。
大多数功能都可以这样分类,它们要么非常简单和稳定,以至于它们在 GCC/MSVC 中的实现正是它们在最终标准中的工作方式,要么它们足够棘手,可能会修复一些错误应用了,所以他们can今天就可以使用,但是在某些边界情况下,您可能会遇到一些粗糙的问题。
仅仅因为 C++0x 功能尚未正式化就避免使用它们听起来确实很愚蠢。避免使用您不相信其完整、无错误且稳定的功能,而使用其余功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)