6

C++0x 标准即将完成。到目前为止,我已经涉足 C++,但避免彻底学习它,因为它似乎缺少许多我在其他语言中被宠坏的现代特性。但是,我会对 C++0x 非常感兴趣,它解决了我的很多抱怨。任何猜测,在标准被批准后,主要编译器供应商需要多长时间才能提供相当完整的、生产质量的实现?它会很快发生以扭转 C++ 受欢迎程度的下降,还是太少、太晚了?你相信 C++0x 会在几年内成为“C++”,还是你相信大多数人会在实践中坚持早期的标准,而 C++0x 会有点像一个混蛋继子,有点像C99?

4

5 回答 5

16

我认为没有理由不采用 C++0x。C++ 社区比 C 更具前瞻性。C 一直被认为是一种“可移植的汇编语言”,因此使用它的人对花哨的新功能并不是非常感兴趣。C++ 的范围更广,而且我还没有听说过期待 0x 的 C++ 程序员。(这也是我的印象,C++ 社区更加“严格”,并且真的不想超出标准进入未定义的行为,这意味着您选择 C++03 或 C++0X 而不是半实现混合。C 程序员往往对此更加放松,并且似乎乐于使用 C89,只混合了几个 C99 特性和头文件)

然而,微软至少需要几年的时间才能赶上。Visual Studio 2010 将支持少数 C++0x 功能(lambdas、decltype 和其他一些功能),但绝大多数将不受支持。我们将不得不等待 VS2012 或任何下一个版本最终得到一些完整的支持。

使用 GCC/G++,情况要好得多,因为大多数标准已经在那里实现了(标准委员会不喜欢采用尚未在真实编译器中实现和测试的功能,而 GCC 分支是常用于此)

但可能仍需要一些时间才能获得稳定和生产就绪。

关于 C++ 的“流行度下降”,我并没有真正看到。我认为过去几年 C++ 的受欢迎程度并没有显着下降。当然,RAD 开发人员已经跳槽到 .NET、Python 或其他语言或平台。但是在今天使用 C++ 的地方,没有多少可行的替代方案,也没有理由让它的普及度下降。

于 2009-01-24T07:32:09.407 回答
3

我不了解其他供应商,但据我所知,微软计划在 Visual C++ 2010 中包含四个 C++0x 语言功能

  1. 右值引用
  2. 汽车
  3. 拉姆达斯
  4. 静态断言

Although this is a small set of C++0x features, they are important ones. Some will enable programmers to write much more compact (auto, lambdas) and error free code. Some (like rvalue references) enable libraries to be more efficient. Microsoft likes lambdas as an enabler for parallel computing.

IMHO: auto alone will make it so much easier to use templates that more programmers will do so. And hopefully this will increase demand for more C++0x features from Microsoft and all vendors.

Microsoft will also be updating their C++ Standard Library implementation but I don't know the details. I believe they are modifying some container classes to take advantage of rvalue reference move semantics. And I believe they including more of TR1 .

于 2009-01-24T16:11:16.410 回答
2

一些实现已经在通往 C++0x 的路上:(gcc)。我的直觉是 C++0x 支持将很快在主要编译器中可用。然而,仍然存在大量必须维护的遗留代码。

于 2009-01-24T06:33:45.547 回答
2

较新版本的 gcc 已经支持许多 C++0x 功能: http: //gcc.gnu.org/projects/cxx0x.html

于 2009-01-24T06:35:19.273 回答
0

Microsoft 将在今年晚些时候在 Visual Studio 2010 中包含 C++0x 支持(社区技术预览已经可用)。

我认为它不会很快成为“C++”,但某些人会选择在代码中有意义的地方添加新语法的一部分。

这些天我不怎么做 C++,但我与之交谈的人要么喜欢它,要么觉得 C++ 的美在他们得到的控制中,如果他们想要一种具有所有这些额外功能的语言,他们会使用 C# /爪哇。

于 2009-01-24T06:38:34.430 回答