Gab*_*ber 8 c++ gcc production-environment c++11
C++ 11为我们提供了许多新的伟大且极其有用的工具.GCC对C++ 11的支持已经取得了很大进展.所以我想过何时切换到C++ 11.这个问题只与gcc有关,我不希望用任何其他编译器编译我的(我们的)代码.
在gcc支持整个C++ 11标准从受益于已经实现的功能之前,你(你)是否会切换到C++ 11?您是否仍会在稳定性和正确性非常重要的生产环境中执行此操作?您是否认为允许开发人员仅使用某些C++ 11功能是一种合理的方法?
你(你)如何决定GCC C++ 11支持何时为生产环境做好准备?
(注意:我知道这个问题,但它特别涉及到gcc 4.4并且有些过时)
这取决于.
如果它是为我的博客或类似的东西供电?当然.
如果是为关键服务供电?当然不是.
我相信C++ 11的支持现在太不成熟,被称为生产就绪.
你可以选择gcc的一个版本,但事实是因为连续的草稿随着新问题的发现和解决而演变,你现在编写的代码可能会被更高版本拒绝,或者行为可能会轻易改变.
因此,我认为这个判断真正取决于你打算做什么.航天飞机由一种古老而成熟的技术提供动力是有原因的:这是在易于开发和对工具的信心之间进行权衡的问题.
这是你的判断,你比我们更了解你的情况.
GCC C++开发人员仍然认为他们的C++ 03支持不符合标准,因此甚至没有正确设置__cplusplus版本(引用需要,我可以查看bug +讨论).他们认为支持是实验性的,因为他们在最终草案/标准出台之前就开始实施基础知识.到目前为止(即GCC 4.6),大多数主要缺陷已被删除,尽管有些细节仍然与确切的标准措辞不一致.
如果可能的话,你也应该和Clang一起测试,恕我直言,并且在GCC缺乏必要的执法的大多数地方更好地坚持微不足道的细节.生产使用是个人的事情.我,我认为每个编译器都有错误,虽然"新东西"中出现错误的可能性在统计上更可能,但是你可能还会遇到一个老版本的错误,弄乱你完全符合规范的代码.这就是为什么我建议使用至少两个编译器来防止任何不兼容性(或至少尽可能减少它们).
至于标准库,libstdc ++大部分都是功能性的,但缺少一些大而有用的部分,比如<regex>,这很难过.如果你感到幸运,你应该能够让LLVM的libc ++至少在Linux和Mac上工作,这是一个完整的c ++ 11库减去功能<atomic>,但也是"块上的新孩子".
总结一下:你运行代码的编译器和标准库越多越好(尽管你应该检查哪些是正确的,哪些是错误的).这不可避免地减少了可用的C++ 11功能的数量,尽管如果你使用GCC/Clang,只有lambda,统一的初始化器并且<atomic>不在你的范围之内.MSVC是一个不同的故事......
| 归档时间: |
|
| 查看次数: |
4128 次 |
| 最近记录: |