大多数编译器already support C++0x。你开始使用C ++ 0x还是在等待x的定义?我必须对我的代码进行一些重构;我应该开始使用新功能吗?
答案 0 :(得分:8)
C ++ 0x尚未完成标准。 在国际公认的标准发布之前,很可能会有很多修改。 所以这完全取决于你在为什么编写代码?如果它是一个工作任务,我会坚持使用常规C ++,等待标准设置,并为编程社区提供调整所需的时间。不要重构你真正需要实现的代码,它可能会给你带来麻烦。
但是我认为C ++ 0x非常适合使用,并且当全局接受0x时熟悉语法也不会有什么坏处。
答案 1 :(得分:4)
我已经开始使用nullptr
,使用#define nullptr 0
用于那些不支持它的编译器(即大多数)。
答案 2 :(得分:4)
答案 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编译器进行新工作。