該標準無疑需要花費數年時間才能實施,因爲它看起來很棒。但是我正在閱讀它,並且至少庫添加(特別是散列圖)將馬上變得非常有用。我在g ++文檔中注意到,我可以獲得4.3或更高版本,並使用標誌來請求新功能,無論存在什麼,但是我想知道是否有任何方法來獲取庫。事實上,現在內置的許多最好的增強功能非常棒,最後還是一個體面的隨機數設施!C++在任何編譯器中的0x庫可用性?
那麼,有沒有我現在可以使用的編譯器,它有一個相當完整的庫,即使它不能使用像auto這樣很酷的新語言功能?
該標準無疑需要花費數年時間才能實施,因爲它看起來很棒。但是我正在閱讀它,並且至少庫添加(特別是散列圖)將馬上變得非常有用。我在g ++文檔中注意到,我可以獲得4.3或更高版本,並使用標誌來請求新功能,無論存在什麼,但是我想知道是否有任何方法來獲取庫。事實上,現在內置的許多最好的增強功能非常棒,最後還是一個體面的隨機數設施!C++在任何編譯器中的0x庫可用性?
那麼,有沒有我現在可以使用的編譯器,它有一個相當完整的庫,即使它不能使用像auto這樣很酷的新語言功能?
GCC與選項-std=c++0x
已經涵蓋的C++ 0x的一個很好的子集。 4.4版本已經非常實用,4.6甚至更多。它缺少模板別名,但許多非常有用的語言功能以及該庫的很大一部分都在那裏,並且功能齊全。
如果您需要標準庫擴展,您可以使用Boost。無論如何,新的標準庫增強功能主要受Boost庫的啓發。至於支持編譯器,Visual Studio 2010 supports a subset of the C++11 standard,GCC有currently the best support for C++11,Clang也是adopting the new standard。不知道其他編譯器,但我認爲他們會很快跟進。
非常多這個 - 新的庫大多在Boost中找到。 – Puppy
GCC/libstdC++擁有大部分庫,但可能需要在包含路徑(#include <tr1/unordered_map>
用於哈希映射)前面加上tr1/
。它還將新庫的內容放入命名空間std::tr1
而不僅僅是std
。
(TR1代表技術報告1,這是描述了的C++ 0x庫中添加的報告。)
某些庫,尤其是你在這裏提到的庫(unordered_map),早在2003年就被定義爲技術評論的一部分,並且已經被移植到主要未修改的C++ 0x標準中。大多數編譯器都在std::tr1
命名空間中實現了TR1庫。
其他庫從其他來源拉昇,提振作爲庫爲即將到來的標準(function
,bind
,thread
...)的一大來源,但取決於你想要添加到您的項目是什麼。
至於是否可以從C++ 0x中提取庫並在非C++ 0x編譯器中使用它們,您很可能無法這樣做,因爲它們將使用更新的功能(請考慮move構造函數),並且將無法編譯。
除了GCC在-std=c++0x
模式下,其所有平臺上的默認libstdC++都支持GCC,您還可以使用LLVM的libc++
,它在Linux/BSD/Mac上運行良好,但尚未移植到Windows。
在這裏您可以找到大部分的編譯器
http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
每當一個新的C++加入0X支持列表被更新的的C++ 0x支持的鏈接。 正如你所看到的那樣,g ++現在支持最大數量的C++ 0x特性。
謝謝,我在列表中看到了4.6,並不確定這是甚麼!我今天必須下載它。我知道還有另外一個問題 - 我在安裝系統之外的4.6編譯器時遇到問題.... – Dov
@Dov:我已經在各種Linux上構建了我自己的GCC 4.6版本,並且MacOSX(作爲root和非root用戶)沒有任何問題。只需要獲得必要的庫(GMP,MPFR,MPC),使用'--prefix'和'make install'進行配置。我發現它非常簡單! (當你在它的時候,你也可能會嘗試4.7!) –
我在創建它之後運行它時出現問題,但事實證明,一些庫已經被放入/ opt/tools/lib中, opt/tools/lib64,所以這只是將兩者放入LD_LIBRARY_PATH的問題。 4.5.1效果很好,我將在安裝4.6或4.7時進行安裝。 – Dov