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

相关文章
相关标签/搜索