2011-06-22 38 views
4

該標準無疑需要花費數年時間才能實施,因爲它看起來很棒。但是我正在閱讀它,並且至少庫添加(特別是散列圖)將馬上變得非常有用。我在g ++文檔中注意到,我可以獲得4.3或更高版本,並使用標誌來請求新功能,無論存在什麼,但是我想知道是否有任何方法來獲取庫。事實上,現在內置的許多最好的增強功能非常棒,最後還是一個體面的隨機數設施!C++在任何編譯器中的0x庫可用性?

那麼,有沒有我現在可以使用的編譯器,它有一個相當完整的庫,即使它不能使用像auto這樣很酷的新語言功能?

回答

3

GCC與選項-std=c++0x已經涵蓋的C++ 0x的一個很好的子集。 4.4版本已經非常實用,4.6甚至更多。它缺少模板別名,但許多非常有用的語言功能以及該庫的很大一部分都在那裏,並且功能齊全。

這裏是full feature list

+0

謝謝,我在列表中看到了4.6,並不確定這是甚麼!我今天必須下載它。我知道還有另外一個問題 - 我在安裝系統之外的4.6編譯器時遇到問題.... – Dov

+0

@Dov:我已經在各種Linux上構建了我自己的GCC 4.6版本,並且MacOSX(作爲root和非root用戶)沒有任何問題。只需要獲得必要的庫(GMP,MPFR,MPC),使用'--prefix'和'make install'進行配置。我發現它非常簡單! (當你在它的時候,你也可能會嘗試4.7!) –

+0

我在創建它之後運行它時出現問題,但事實證明,一些庫已經被放入/ opt/tools/lib中, opt/tools/lib64,所以這只是將兩者放入LD_LIBRARY_PATH的問題。 4.5.1效果很好,我將在安裝4.6或4.7時進行安裝。 – Dov

1

GCC/libstdC++擁有大部分庫,但可能需要在包含路徑(#include <tr1/unordered_map>用於哈希映射)前面加上tr1/。它還將新庫的內容放入命名空間std::tr1而不僅僅是std

(TR1代表技術報告1,這是描述了的C++ 0x庫中添加的報告。)

1

某些庫,尤其是你在這裏提到的庫(unordered_map),早在2003年就被定義爲技術評論的一部分,並且已經被移植到主要未修改的C++ 0x標準中。大多數編譯器都在std::tr1命名空間中實現了TR1庫。

其他庫從其他來源拉昇,提振作爲庫爲即將到來的標準(functionbindthread ...)的一大來源,但取決於你想要添加到您的項目是什麼。

至於是否可以從C++ 0x中提取庫並在非C++ 0x編譯器中使用它們,您很可能無法這樣做,因爲它們將使用更新的功能(請考慮move構造函數),並且將無法編譯。

3

除了GCC在-std=c++0x模式下,其所有平臺上的默認libstdC++都支持GCC,您還可以使用LLVM的libc++,它在Linux/BSD/Mac上運行良好,但尚未移植到Windows。