C++0x是ISO計(jì)劃于2011年底完成的下一版C++語言標(biāo)準(zhǔn)。從2004年2月7日起陸續(xù)推出多個(gè)工作草案,當(dāng)前最新的是2009年11月9日發(fā)布的N3000(http://www.open-std.org/ JTC1/SC22/ WG21/docs/papers/2009/n3000.pdf)。
新的C++標(biāo)準(zhǔn)將大幅改善C++內(nèi)核語言領(lǐng)域,包括多線程支持、泛型編程、統(tǒng)一的初始化,以及表現(xiàn)的加強(qiáng)等。具體的改進(jìn)有:增加右值引用(typename &&)、擴(kuò)展常數(shù)表達(dá)式(引入新關(guān)鍵字constexpr)、放寬關(guān)于POD(Plain Old Data,簡單舊數(shù)據(jù))型結(jié)構(gòu)的定義、引入外部模板概念(extern template class)、將初始化列表的概念綁定到類型上(std::initializer_list)、提供一種統(tǒng)一語法來初始化任意對象、可進(jìn)行類型推導(dǎo)(auto)、支持以范圍為基礎(chǔ)的for循環(huán)、允許定義λ(lambda)函數(shù)、引進(jìn)一種新的函數(shù)定義與聲明的語法(template< typename LHS, typename RHS> [] AddingFunc(const LHS &lhs, const RHS &rhs) -> decltype(lhs+rhs) {return lhs + rhs;})、允許派生類手動繼承基底類的構(gòu)造函數(shù)(using 基類名::基類名;)、引入表示空指針常數(shù)的新關(guān)鍵字(nullptr)、引進(jìn)一種特別的枚舉類(enum class)、關(guān)鍵字explicit修飾符可用于顯示類型轉(zhuǎn)換、可用于模板類型的別名定義(template<…> using TypedefName = SomeType<…>;)、移除所有對 union 的使用限制(除了其成員仍然不能是引用類型)、加入(允許任意個(gè)數(shù)和任意類別的模板實(shí)參的)變長參數(shù)模板、增加兩種新的字符類別char16_t(UTF-16)和char32_t(UTF-32)(傳統(tǒng)的char類型對應(yīng)于UTF-8)和新的字符串常量(u8"I'm a UTF-8 string."、u"This is a UTF-16 string."、U"This is a UTF-32 string.")、允許用戶自定義新的常量修飾符(literal modifier)、引入支持多線程編程的多任務(wù)存儲器模型和線程區(qū)域的存儲期限(thread_local)、可使用或禁用對象的默認(rèn)函數(shù)(default和delete)、(同C99)增加64位的整數(shù)類型(long long int)、增加用于測試的靜態(tài)聲明(assertion)、允許sizeof操作符作用在類的數(shù)據(jù)成員上(無須明確的對象)。
C++0x標(biāo)準(zhǔn)程序庫將引進(jìn)數(shù)個(gè)新功能,其中許多可以在現(xiàn)行標(biāo)準(zhǔn)下實(shí)現(xiàn),而另外一些則依賴于(或多或少)新的C++0x內(nèi)核語言機(jī)能。新的程序庫的大部分被定義于于2005年發(fā)布發(fā)TR1(Library Technical Report,庫技術(shù)報(bào)告),各式TR1的完全或部分實(shí)現(xiàn)目前提供在命名空間std::tr1,C++0x會將其移置于命名空間std之下。例如,增加了處理正則表達(dá)式(regular expression)的庫(對應(yīng)的頭文件為<regex>)和可擴(kuò)展的隨機(jī)數(shù)功能。
新聞熱點(diǎn)
疑難解答