C++11用於元編程的類別屬性

C++11用於元編程的類別屬性算法

  許多算法能做用在不一樣的數據類別; C++ 模板支持泛型,這使得代碼能更緊湊和有用。然而,算法常常會須要目前做用的數據類別的信息。這種信息能夠經過類別屬性 (type traits) 於模板實體化時將該信息萃取出來。編程

  類別屬性能識別一個對象的種類和有關一個類別 (class) (或 struct) 的特徵。頭文件 <type_traits> 描述了咱們能識別那些特徵。函數

  底下的例子說明了模板函數‘elaborate’是如何根據給定的數據類別,從而實體化某一特定的算法 (algorithm.do_it)。性能

  

  經過定義在 <type_transform> 的類別屬性,自定的類別轉換是可能的 (在模板中,static_cast 和 const_cast 沒法適用全部狀況)。spa

此種編程技巧能寫出優美、簡潔的代碼; 然而除錯是此種編程技巧的弱處: 編譯期的錯誤信息讓人不知所云,運行期的除錯更是困難。code

參考:http://zh.wikipedia.org/wiki/C++0x#.E7.94.A8.E6.96.BC.E5.85.83.E7.B7.A8.E7.A8.8B.E7.9A.84.E5.9E.8B.E5.88.A5.E5.B1.AC.E6.80.A7orm

相關文章
相關標籤/搜索