在第一次当我看到即将到来C++0x标准,我感到高兴,并不是说我是悲观的,但是当它的思想现在我感觉有点不太有希望的。

主要是因为三个原因:

  1. 一个很大的提高膨胀(它必须导致绝望的编制时间?),
  2. 该法似乎冗长的(不一样的功能已大大增强,因为我最初可能会有希望),
  3. 我非常感兴趣的便携性和其他平台(iPhone,Xbox游戏机、Mac),没有是非常真实的风险,即"标准"将需要很长时间来,获得足够的便携式?

我想#3小的风险、汲取的经验教训的模板,在上一个十年;但是魔鬼的详细信息。

编辑2(试图将小的奇思妙想): 你会说它是安全的一家公司要过渡到C++0x在第一年有效的标准,或将相关的风险很大?

有帮助吗?

解决方案

编辑:我要(和其他人像我一样)必须保持非常密切的眼睛在建立时代,不可读的编码和缺乏便携性和做大量的原型,以确保它的安全移动与新的标准?

是的。但是你必须做的所有这些事情的 电流 标准。我看不到,这是得到任何更糟的是用C++0x.

C++建立次 总是 吸。有没有原因为什么C++0x应慢于这是今天,虽然。如往常一样,你只包括头你需要的。以及每个标题没有增长明显更大,因为据我可以告诉。

当然概念是一个很大的未知数在这里,人们担心他们会放慢的编写时间显着。这是一个多原因,为什么他们被切断。

C++很容易成为不可读的如果你不小心。再次,没有什么新意。再次,C++0x提供了很多的工具,以帮助减少这一问题。Lambda是不是很简洁,作为在,比方说,蟒蛇或SML,但他们是一个地狱的一个很大的可读性比函,我们必定义 今天.

为了便携性,C++是一个雷区。没有任何保证给整数类型的大小,也不是为串的编码。在这两种情况下,C++0x提供的工具来解决这个(Unicode特char类型,以及整数的一个保证的固定的尺寸)

即将到来的标准的指甲下的一些问题,目前阻碍可移植性。

所以整体,是的,问题,你说的都是真实的。它们的存在的今天,它们会存在C++0x.但我可以看到,C++0x减少的影响,这些问题。它不会使他们变得更糟。

你是对的,它会采取的同时,为符合标准,以成为适用于所有的平台。但我认为这将是一个更快的进程于它是用C++98.

所有主要编译器供应商似乎非常热衷于C++0x的支持,这是不是真的情况下最后一次。(可能是因为,它主要是一个问题的调整和固定的预的标准特征,他们已经实现,使它更容易要求预先标准编译器"之类的几乎近C++98符合".

我认为,整体上,C++社会的更多标准的重点和前瞻性的比十年前。如果你想卖掉你的编译器,你们要带C++0x严重。

但是有一定要几年时间从标准的被释放,直至完全(或大多数)兼容的编译器。

其他提示

  1. 你付钱为只有你使用。如果你不需要一个复杂的模板功能,不#包括标题,它的定义中,并且你将不需要处理它。
  2. Lambda功能应该减少的详细程度STL算法的一个良好的位;和 auto 变量将有助于与这样的代码 std::map<foo, std::shared_ptr<std::vector<bar> > >::const_iterator...
  3. 是的,这将需要一段时间。许多新的特点是事实上在提高,如果你想要携带的这是你应使用至少一个几年之后,标准的实施。幸运的是,只有两个编译器,包括那些平台所提到的:g++和微软C++编译器。一旦他们得到的支持,这只是一个时间问题之前嵌入的工具链的获得重建与新版本。不幸的是,可能很多时间...

最喜欢的C++你将支付只有你需要什么。因此如果你不想的"提高膨胀"的有用的跟踪指针,线图书馆等。然后你不需要支付的汇编。

我非常肯定,这将可移植性以解决的设计,尤其是因为很多是基于现有的携带的代码项目等提升。这两个海湾合作委员会和微软VC具有实现很多C++0x已经为你会看到他们的各自当前的原型版本。

  1. C++总是会有无望的编制时间,它的整个理念是事情做一次(即这样做在编制时间),所以你不必重复它在运行时间和减少的效能。并且正如其他人所说的那样,不包括图书馆如果你不需要它!
  2. C++将永远是非常功能已大大增强,因为它的目的是向后兼容的。该verboseness来自一个古老的语言,有许多事情,加上作为语言演变。正如一些其他人所说的那样,lambda和自动变量将会大大减少的详细程度以及
  3. 这是一个问题与任何大的变化,以一种语言,但是我认为这是广泛认同的改变将使语言更容易使用,因此它应该获得通过迅速。

我真的考虑#3个最大的风险短期的。据我所知,该标准是引入新的语法在几个领域(lambda)和不断变化的含义之前的字(自动的实例)。代码使用这些功能只是便携式的,如果编译器,为每一个平台上部署,以支持他们。

确定这会发生在某一时间点。但是,添加一个新的功能以一个编译器是不小的壮举,并需要相当多的时间。我会害怕它会花太长时间,用于这些功能将支持在主编译器,并因此抑制能力的一个程序员可以早期采用者和携带。

我发现C++0x使代码很清楚,在许多情况下。

建立时间可以大大缩短的时处理严重的模板代码,由于可变的模板。提升::使用一个真的丑陋的模板超载方案来实现"可变的模板"C++98.这导致汇编的时间来打击通过屋顶。 链接

基于范围的循环是巨大以及可读性。

考虑C++98上下:

for (std::vector<int>::const_iterator itr = vec.begin(); itr != vec.end(); ++itr)
   foo(*itr);

现在可以是书面的(在实施G++4.6)为:

for (auto elem : vec)
   foo(elem);

auto 关键字减少噪音语法。

Lambda伟大的使用STL算法为好,并使其更具可读性,当你没有单独建立C式回呼功能或甚至一整类。

一个优点标准的事情是,编译器可以快捷方式。E.g。升模板马戏团需要实施 is_X<U> 消失的如果你可以简单地方来 __compiler__is_X<U>.这可能很容易地节省2个数量级,有时3.

问题是什么在这里?当然这将需要几年的时间之前编译器在深奥的平台将执行这些功能。不要指望能够使用新的功能,直到3,也许5年的未来。'他人则生活,那么担心',因为我们说,在荷兰。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top