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》?嘖嘖。
可以分冊呀XD
話說,我又從新看了你的msn對話記錄,
你應該知道我說哪一篇吧?呵呵
> 可以分冊呀XD
就算分冊,頁數這麼多,《C++ Primer, 5/e》豈不得譯上兩年?XD
而且侯 Sir 會累死 :P。
> 你應該知道我說哪一篇吧?
不知道耶 XD。
話說,這些新的語言特性,我只看懂簡單的...XD
上面的意見....不如4e不譯了,直接譯5e你覺得怎麼樣..XD
<< 回到主頁