2006/07/03

C++ Evolution

C++0x 最新的 evolution state 已經出現了,以下簡單整理「確定會出現在 C++0x 的特性」:

static_assert
編譯期的 assertion 機制(<cassert> 裡面的 assert 是在執行期起作用),型如 static_assert (constant-expression, string-literal);。是的,再一個新的關鍵字。constant-expression 為 0 時,編譯器必須產出「包含那個 string-literal」的錯誤訊息。
extern template
藉著在 template 之前加上 extern 壓抑自發的隱式具現化(implicit instantiations),避免同一個 template 在多個編譯單元內重複具現化。
Extended friend declarations
擴展 friend declaration 的適用對象範圍,特別針對 template<typename T> class C { friend class T; }; 這種情況。
Synchronizing the C++ preprocessor with C99
讓 C++ preprocessor 與 C99 preprocessor 保持同步。
"Conditionally-Supported Behavior"
標準書的用字問題。
Adding the long long type to C++
是的,標準 C++ 的支持者不需偷偷摸摸地用了 :P。
Delegating Constructors
把一個建構式的初始化工作委託給另一個,也就是 Java constructor 裡面的 this invocation。語法很直觀:就在 member initializer list 裡面「喚起」標的建構式(target constructor,這是標準用語)。一旦自己是個 delegating constructor,就不得在 initializer list 裡面初始化 base classes 或 data members,也就是說,實際進行「初始化」動作的建構式永遠恰只有一個。
Clarification of Initialization of Class Objects by rvalues
和「搬移語意」(move semantics)有關。
Right Angle Brackets
我們終於可以直接寫 vector<vector<vector<int>>> 了 :)。
Deducing the type of variable from its initializer expression
也就是 auto 關鍵字的新用法,先前的 blog 已提過。
Rvalue Reference
和「搬移語意」(move semantics)有關。
Alignment Support
可從語言層面控制 alignment。
New Character Types in C++
加入對 Unicode 的支援。
Explicit Conversion Operators
explicit 關鍵字原只能用於「單引數建構式」之上,以防止透過這個建構式進行隱式轉換。之後像 operator int() 這種 conversion operator 也能冠以 explicit,防止透過此類運算子進行隱式轉換。

還有很多正在熱烈討論中,像是(最引人注目的)concept system(兩派似乎尚未分出高下)、template aliasing(e.g. template<typename T> using Matrix = std::vector<vector<T>>; Matrix<int> m;)、nullptr literal for null pointers、lambda expressions and closures(若通過,將大大簡化 function objects 的使用)…等等。都很令人興奮 :)。不過每本 C++ 經典大概都得厚個一倍以上吧 XD。兩千頁的《C++ Primer, 5/e》?擁有一百個條款的《Effective C++, 4/e》?嘖嘖。

Anonymous Shuan7/03/2006 7:02 am 說:

可以分冊呀XD

話說,我又從新看了你的msn對話記錄,
你應該知道我說哪一篇吧?呵呵

 
Blogger Josh Ko7/03/2006 9:51 am 說:

> 可以分冊呀XD

就算分冊,頁數這麼多,《C++ Primer, 5/e》豈不得譯上兩年?XD
而且侯 Sir 會累死 :P。

> 你應該知道我說哪一篇吧?

不知道耶 XD。

 
Blogger yen37/03/2006 11:19 am 說:

話說,這些新的語言特性,我只看懂簡單的...XD

上面的意見....不如4e不譯了,直接譯5e你覺得怎麼樣..XD

 

<< 回到主頁