C++11 標準正式發布!


C++11 基本上就是之前介紹過的 C++0x 的最後名稱,他基本上就是目前最新 C++ 程式語言的標準規範。在繼 C++98(ISO/IEC 14882:1998)和 C++03(ISO/IEC 14882:2003)之後,又過了八年,終於又有新的 C++ 程式語言標準了!

之前 Heresy 介紹的時候,基本上都還只是草案,不過現在算是正式發布、成為新一代的標準了~詳細的新聞可以參考 ISO 官方的正式介紹:《C++ language gets high marks on performance with new ISO/IEC standard》。不過,標準的文件是要花錢購買的(線上購買)、而且還不便宜,所以一般人大概不會真的去買來看吧。 ^^"

而如果真的有興趣的話,或許可以參考 2011/02/28 的草案 PDF,基本上差異應該不大才對。

Heresy 一開始整理的時候,主要是根據 Microsoft Visual C++ 2010 有支援的 Core Language 的部分來寫的,所以只列了六項:

  1. auto:《C++0x: auto 和 decltype》[MSDN]
  2. decltype:《C++0x: auto 和 decltype》[MSDN]
  3. Lambda Expressions:《C++0x:Lambda expression》[MSDN]
  4. Rvalue Reference:[MSDN]
  5. static_assert:《C++0x:static_assert 和 nullptr》[MSDN]
  6. nullptr:《C++0x:static_assert 和 nullptr》[MSDN]

而實際上,除了上面這六項功能之外,C++11 還包含了更多的功能;如果想知道完整功能的部分,在維基百科上,就可以找到滿詳細的功能列表了~Heresy 這邊大概摘錄一下他的列表:

Core Language
  • Runtime performance enhancements
    • Rvalue references and move constructors
    • Generalized constant expressions
    • Modification to the definition of plain old data
  • Build time performance enhancements
    • Extern template
  • Usability enhancements
    • Initializer lists
    • Uniform initialization
    • Type inference
    • Range-based for-loop
    • Lambda functions and expressions
    • Alternative function syntax
    • Object construction improvement
    • Explicit overrides and final
    • Null pointer constant
    • Strongly typed enumerations
    • Right angle bracket
    • Explicit conversion operators
    • Template aliases
    • Unrestricted unions
    • Identifiers with special meaning
  • Functionality improvements
    • Variadic templates
    • New string literals
    • User-defined literals
    • Multitasking memory model
    • hread-local storage
    • Explicitly defaulted and deleted special member functions
    • Type long long int
    • Static assertions
    • Allow sizeof to work on members of classes without an explicit object
    • Allow garbage collected implementations
Standard Library
  • Upgrades to standard library components
  • Threading facilities
  • Tuple types
  • Hash tables
  • Regular expressions
  • General-purpose smart pointers
  • Extensible random number facility
  • Wrapper reference
  • Polymorphic wrappers for function objects
  • Type traits for metaprogramming
  • Uniform method for computing the return type of function objects

不過,由於維基百科本身就是多人共筆的性質,所以 Heresy 也不確定是否完整就是了。但是實際上更大的問題,應該還是目前沒有哪個編譯器,是可以完整支援的。 ^^"

而如果想知道 C++11 的 Core Language 新功能在幾個主要的編譯器上的支援度比較的話,可以參考 http://stdcxx.apache.org/ 提供的這張支援度列表(連結)(話說,裡面有有的編譯器 Heresy 根本沒聽過)。

以 Visual C++ 2010 來說,就可以找到很多不支援的功能,而也有不少功能,是要到 Visual C++ 11 才支援的。不過以 Heresy 自己滿想用的「Range-based for-loop」(link)來說,似乎就是算到了 VC11 都還是不支援啊…

至於標準函式庫的部分,C++11 應該算是把大部分 TR1 的函式庫,都提升為標準函式庫了~這樣程式寫起來,也就更方便了!尤其是加入了 thread 這個 library,以後就可以用標準函式庫來寫 threading,而不必再靠 boost::thread 或 pthread 了~(不過,VC 要到下一代的 VC11 才支援就是了)

Advertisements

關於 Heresy
https://kheresy.wordpress.com

12 Responses to C++11 標準正式發布!

  1. 通告: AMD 放大招了…推出 Boltzmann Initiative、支援 CUDA 程式的轉移! | Heresy's Space

  2. 通告: 第二版《The Boost C++ Libraries》 | Heresy's Space

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: