Jon*_*röm 2 c++ portability c++11
起初,当我看到即将推出的C++ 0x标准时,我很高兴,并不是说我很悲观,但现在想到它时,我感到有些不那么充满希望.
主要是因为三个原因:
我认为#3的风险较小,从过去十年的模板中吸取了教训; 然而魔鬼的细节.
编辑2(试图减少奇思妙想):你会说公司在标准的第一个有效年份过渡到C++ 0x是安全的,还是会有很大的风险?
bdo*_*lan 14
auto变量将有助于代码std::map<foo, std::shared_ptr<std::vector<bar> > >::const_iterator...jal*_*alf 13
编辑:我(以及像我这样的其他人)是否必须密切关注构建时间,无法读取的代码和缺乏可移植性,并进行大规模原型设计以确保继续使用新标准?
是.但是你必须用现行标准做所有这些事情.我没有看到它在C++ 0x上变得更糟.
C++构建时间总是很糟糕.但是,没有理由为什么C++ 0x应该比现在慢.与往常一样,您只需要包含所需的标题.据我所知,每个标题都没有明显变大.
当然,概念是这里最大的未知之一,并且担心它们会大大减慢编译时间.这是他们被削减的众多原因之一.
如果你不小心,C++很容易变得不可读.再一次,没有新的东西.而且,C++ 0x提供了许多工具来帮助最小化这个问题.Lambda并不像Python或SML那样简洁,但它们比我们今天必须定义的仿函数更具可读性.
至于可移植性,C++已经是一个雷区.没有给出整数类型大小的保证,也没有字符串编码的保证.在这两种情况下,C++ 0x都提供了解决此问题的工具(使用特定于Unicode的char类型和保证固定大小的整数)
即将推出的标准指出了一些目前阻碍可移植性的问题.
总的来说,是的,你提到的问题是真的.它们存在于今天,它们将存在于C++ 0x中.但据我所知,C++ 0x减少了这些问题的影响.它不会让他们变得更糟.
你是对的,所有平台上的兼容标准都需要一段时间.但我认为这将是一个比C++ 98更快的过程.
所有主要的编译器供应商似乎都非常热衷于C++ 0x支持,这在上一次并非如此.(可能因为那时候,它主要是调整和修复它们已经实现的预标准功能的问题,因此更容易声称你的预标准编译器"几乎几乎与C++ 98兼容".
我认为总的来说,C++社区比十年前更注重标准和前瞻性.如果你想出售你的编译器,你将不得不认真对待C++ 0x.
但是,从完全(或大部分)兼容的编译器可用到标准发布之前,肯定会有几年的时间.
Sim*_*ele 10
像大多数C++一样,您只需支付所需费用.因此,如果您不想要有用的跟踪指针,线程库等的"增加膨胀",那么您不需要为编译付费.
我非常肯定可移植性将通过设计来解决,特别是因为很多是基于来自boost等项目的现有可移植代码.正如您从各自的当前原型版本中看到的那样,GCC和Microsoft VC都已经实现了大部分C++ 0x.