簡體   English   中英

你有沒有開始使用C ++ 0x?

[英]Have You Started Using C++0x?

大多數編譯器已經支持C ++ 0x 你開始使用C ++ 0x還是在等待x的定義? 我必須對我的代碼進行一些重構; 我應該開始使用新功能嗎?

C ++ 0x尚未完成標准。 在國際公認的標准發布之前,很可能會有很多修改。 所以這完全取決於你在為什么編寫代碼? 如果它是一個工作任務,我會堅持使用常規C ++,等待標准設置,並為編程社區提供調整所需的時間。 不要重構你真正需要實現的代碼,它可能會給你帶來麻煩。

然而,我認為C ++ 0x非常適合使用,並且當全局接受0x時熟悉語法也不會有什么壞處。

我已經開始使用nullptr ,對那些不支持它的編譯器(即大多數)使用#define nullptr 0

從您提供的鏈接看起來,您實際上意味着TR1 ,而不是真正的C ++ 0x。 是的 ,我使用大多數新的TR1庫已有一段時間了,因為其中許多都是以前的Boost庫。

我只能鼓勵每個人也使用它們。

我會推遲編寫生產代碼,直到'0x + y,其中y是他們處理編譯器中的錯誤並將其帶入標准complience(無論標准可能是什么)。

但對於發展? 我用它來玩,寫作項目euler等。我也在演示文稿和新聞組中使用它。

很少有編譯器支持某些東西。 實際上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

我們已經玩了很多c ++ 0x,現在當gcc支持一些功能時,我們會盡快使用它們。 原因很簡單 - 使用auto關鍵字可以節省大量的輸入,使用rvalue引用可以獲得性能提升,初始化程序列表和可變參數模板可以減少輸入和更易讀的代碼。

實際上,c ++ 0x標准的主要目標也是我們的目標,因為我們將利用這些功能為競爭對手帶來優勢。 這就是為什么我們要在不等待的情況下使用它們。 當然,如果您需要多平台兼容性,則此步驟是不可接受的。 如果你不關心它,立即使用它,你只能贏。

是的我已經在使用C ++ 0x並發布了開源庫和代碼。 我將來的所有C ++開源項目都將使用此變體編寫。 使用variadic模板參數和decltype / auto之后我就不能回去了!

當Visual Studio FULLY支持它時,我將開始使用它。 目前VS10僅支持一些功能。

我們仍然在從VS6切換到VS 2005.在201x年末之前,我們可能不會專門使用C ++ 0x編譯器來完成新工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM