簡體   English   中英

使用c ++ 0x-安全嗎?

[英]using c++0x - safe?

我想使用stl哈希圖,並且除其他外,我發現c ++沒有它,但是c ++ 0x確實有-因此(不是最新的人)可以安全使用c ++ 0x嗎? (它是否已經過全面測試,並且可以指望相對無缺陷?)。 如果是這樣-好像有很多較新的版本(c ++ 11)-我應該使用它們,否則它們仍然不夠可靠。 實際上,無論如何,當我嘗試使用新界面中的某些內容時,我的linux編譯器告訴我必須包含c ++ 0x-所以我想我的編譯器不是最新的。

C ++ 0x是C ++ 11的工作名稱。

標簽信息頁面中查找您的編譯器版本,以了解其對新功能的支持。

長話短說:GCC遙遙領先,但仍不具備100%的功能。 某些編譯器尚不支持諸如用戶定義的文字之類的東西。 編輯:我不確定,但是我認為正則表達式和原子內存模型的某些功能屬於此類。)諸如rvalue引用之類的基本功能已廣泛完成。

std::unordered_map由C ++ 03 TR1引入,並且所有C ++ 11實現以及所有現代C ++ 03實現都通過其TR1庫得到支持,即使沒有C ++ 11語言支持也是如此。 在TR1下,該模板稱為std::tr1::unordered_map ,您可能必須采取一些特定於平台的步驟來啟用TR1,例如將一些tr1/子目錄添加到包含文件搜索路徑。

是的,應該很安全。 但是-正如您已經看到的-在各種編譯器中僅實現了C ++ 11標准的一部分。 嘗試獲取最新的gcc,它實現了大多數C ++ 11功能: http : //gcc.gnu.org/projects/cxx0x.html

對於非安全性至關重要的應用程序,它應該是安全的。 我認為還沒有支持C ++ 0x的安全性至關重要的編譯器。

但是,對於桌面應用程序,您應該不會有任何問題。 但請注意,只有少數編譯器支持C ++ 0x(afak gcc 4.6+和VC 2010),並且它們不支持所有功能。 閱讀編譯器規范以檢查它們支持什么以及不支持它們,這一點很重要。

我希望等待這些編譯器的更新版本在商業應用中使用它。

沒有C ++ 0x。 那是2011年8月12日終於變成C ++ 11的一個工作名稱。

該標准包含許多單獨起草的部分,甚至在該標准定稿之前,編譯器就開始單獨支持它們,但另一方面,某些部分則根本不被支持。 因此,您需要檢查編譯器是否支持要使用的功能。

現在是std::unordered_map的特殊情況,它首先在C ++ TR1中進行了標准化,但早在boost之前就已出現。 大多數不支持C ++ 11的編譯器都支持TR1,因此std::tr1::unordered_map將會存在,對於那些不支持的編譯器,您總是可以將其提升。

對於gcc,錯誤是您需要啟用 C ++ 11。 只需在編譯器命令行中添加-std=c++0x選項即可完成。 這樣做是為了確保您不會在仍然關心可移植到C ++ 03編譯器的代碼中意外使用C ++ 11功能。

暫無
暫無

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

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