5

大多数编译器已经支持 C++0x。你是开始使用 C++0x 还是在等待 x 的定义?我必须对我的代码进行一些重构;我应该开始使用新功能吗?

4

9 回答 9

8

C++0x 还不是一个完整的标准。在发布国际公认标准之前,可能会有很多修订。所以这一切都取决于,你写代码是为了什么?如果是为了工作任务,我会坚持使用常规的 C++,等待标准被设置,并给编程社区调整所需的时间。不要重构你真正需要实现的代码,它可能会给你带来很多麻烦。

然而,我认为 C++0x 非常适合使用,而且当 0x 被全球接受时,熟悉语法也无妨。

于 2009-06-02T15:19:50.963 回答
4

从您提供的链接看来,您实际上是指TR1,而不是真正的 C++0x。的,我使用大部分新的 TR1 库已经有一段时间了,因为它们中的许多都是以前的Boost库。

我只能鼓励每个人也使用它们。

于 2009-06-02T16:27:26.997 回答
4

我已经开始使用nullptr,#define nullptr 0用于那些还不支持它的编译器(即大多数)。

于 2009-06-02T16:18:47.730 回答
3

很少有编译器支持某些东西。实际上 VS 只支持 TR1 库,gcc 支持一些特性,如可变参数模板、右值、自动等等。英特尔编译器有一些。

我主要开始使用可变参数模板,例如:

#ifdef HAvE_VARIADIC
template<typename... Args>
void format(std::string,Args... args);
#else
template<typename T1>
void format(std::string,T1 p1);
template<typename T1,typename T2,>
void format(std::string,T1 p1,T2 p2);
...
template<typename T1,typename T2,...,typename T10>
void format(std::string,T1 p1,T2 p2,..., T10 p10);
#endif
于 2009-06-02T18:51:09.113 回答
3

我会推迟编写生产代码,直到 '0x+y,y 是他们从编译器中处理错误并将其纳入标准兼容性(无论标准可能是什么)。

但是为了发展?我用它来玩,写项目 euler等等。我也用它来做演示和新闻组。

于 2009-06-02T15:14:57.977 回答
2

我们经常使用 c++0x,现在当 gcc 支持某些功能时,我们将在它们可用时立即使用它们。原因很简单 - 使用 auto 关键字可以节省大量输入,使用右值引用可以获得性能提升,使用初始化列表和可变参数模板可以减少输入并提高代码的可读性。

实际上,c++0x 标准的主要目标也是我们的目标,因为我们将通过这些特性对我们的竞争对手有优势。这就是为什么我们不用等待就可以使用它们的原因。当然如果需要多平台兼容,这一步是不行的。万一你不在乎,立即使用它,你只能赢。

于 2009-06-19T06:06:19.573 回答
2

是的,我已经在使用 C++0x 并发布开源库和代码。我未来所有的 C++ 开源项目都将使用这个变体编写。使用可变参数模板参数和 decltype/auto 后,我无法返回!

于 2010-07-01T14:31:08.503 回答
1

We are still in the process of switching from VS6 to VS 2005. We probably wont be using exclusively C++0x compilers for new work until late 201x.

于 2009-06-02T16:25:48.917 回答
1

当 Visual Studio完全支持它时,我将开始使用它。目前 VS10 只支持一些功能。

于 2009-06-02T15:46:21.743 回答