你有没有开始使用C ++ 0x?

时间:2009-06-02 15:09:14

标签: c++ c++11

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

9 个答案:

答案 0 :(得分:8)

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

但是我认为C ++ 0x非常适合使用,并且当全局接受0x时熟悉语法也不会有什么坏处。

答案 1 :(得分:4)

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

答案 2 :(得分:4)

从您提供的链接看起来,您实际上意味着TR1,而不是真正的C ++ 0x。并且,我使用大多数新的TR1库已有一段时间了,因为其中许多都是以前的Boost库。

我只能鼓励大家也使用它们。

答案 3 :(得分:3)

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

但是对于发展?我用它来玩,写project euler等等。我也在演示文稿和新闻组中使用它。

答案 4 :(得分:3)

很少有编译器支持某些东西。实际上VS只支持TR1库,gcc支持variadic templatres,rvalue,auto等功能。英特尔编译器有一些。

我大多开始使用变量模板,如:

#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

答案 5 :(得分:2)

我们已经玩了很多c ++ 0x,现在当gcc支持某些功能时,我们会尽快使用它们。 原因很简单 - 使用auto关键字可以节省大量的输入,使用rvalue引用可以获得性能提升,使用初始化列表和可变参数模板减少输入和更易读的代码。

实际上c ++ 0x标准的主要目标也是我们的目标,因为我们将利用这些功能为竞争对手带来优势。这就是为什么我们要在不等待的情况下使用它们。当然,如果您需要多平台兼容性,则此步骤是不可接受的。如果你不关心它,立即使用它,你只能赢。

答案 6 :(得分:2)

是的我已经在使用C ++ 0x并发布了开源库和代码。我将来的所有C ++开源项目都将使用此变体编写。使用variadic模板参数和decltype / auto之后我就不能回去了!

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我们仍然在从VS6切换到VS 2005.我们可能不会在201x年末之前使用C ++ 0x编译器进行新工作。