【C++11用於元編程的類別屬性】算法
許多算法能做用在不一樣的數據類別; C++ 模板支持泛型,這使得代碼能更緊湊和有用。然而,算法常常會須要目前做用的數據類別的信息。這種信息能夠經過類別屬性 (type traits
) 於模板實體化時將該信息萃取出來。編程
類別屬性能識別一個對象的種類和有關一個類別 (class) (或 struct) 的特徵。頭文件 <type_traits>
描述了咱們能識別那些特徵。函數
底下的例子說明了模板函數‘elaborate’是如何根據給定的數據類別,從而實體化某一特定的算法 (algorithm.do_it
)。性能
經過定義在 <type_transform>
的類別屬性,自定的類別轉換是可能的 (在模板中,static_cast
和 const_cast
沒法適用全部狀況)。spa
此種編程技巧能寫出優美、簡潔的代碼; 然而除錯是此種編程技巧的弱處: 編譯期的錯誤信息讓人不知所云,運行期的除錯更是困難。code