2009-06-02 44 views
5

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

+13

不,還沒有完全支持C++ 0x的編譯器。有幾個編譯器實現了C++ 0x特性的部分SUBSET,但幾乎不是全部。此外,標準還沒有完成,可能會改變。 – 2009-06-02 15:17:00

+1

他們沒有時間來重新命名它C++ 1x。 – 2009-06-02 16:27:05

+5

如果延遲的話,它將成爲C++ 0a – 2009-06-02 16:46:10

回答

8

C++ 0x不是一個完整的標準呢。 在國際公認的標準發佈之前,很可能會有很多修訂。 所以這一切都取決於,你在寫什麼代碼?如果是爲了工作分配,我會堅持使用常規的C++,等待標準被設置,並給編程社區調整所需的時間。不要重構你真正需要實現的代碼,它可能會給你帶來麻煩。

但是我認爲C++ 0x很棒,可以在全球接受0x時熟悉語法。

+3

該計劃是在今年年底左右發佈的標準,預計不會有太多修改。他們已經得到了一份草案,並且已經修改了一兩次。今年晚些時候,他們將在ISO中進行投票,並且預計會在沒有任何問題的情況下通過。 – jalf 2009-06-02 15:26:16

3

我會延遲編寫生產代碼,直到'0x + y,其中y是他們將編譯器中的錯誤引入編譯器並將其帶入標準complience(無論標準如何)。

但爲了發展?我用它來玩,寫作project euler等,我也用它在演示文稿和新聞組上。

1

我會在Visual Studio FULLY支持它時開始使用它。現在VS10只支持一些功能。

4

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

1

我們仍處於從VS6切換到VS 2005的過程中。我們可能不會使用C++ 0x編譯器進行新的工作,直到201X年底。

4

從你提供的鏈接看來,你實際上的意思是TR1,而不是真正的C++ 0x。而是的,我使用了大部分新的TR1庫已經有相當長的一段時間了,因爲它們中的很多都是以前的Boost庫。

我只能鼓勵大家也使用它們。

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 
2

我們已經打了的C++ 0x了很多,現在當GCC,儘快爲他們提供一些支持,我們將使用它們的功能。 原因很簡單 - 使用auto關鍵字可以節省大量輸入,使用右值引用可以提高性能,並且初始化程序列表和可變參數模板的輸入更少,代碼更易讀。

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

2

是的我已經在使用C++ 0x併發布開源庫和代碼。我所有未來的C++開源項目都將用這種變體編寫。在使用可變參數模板參數和decltype/auto後,我無法返回!

相關問題