G2.9版本,这个版本实用性不高。
trivial是不重要的意思,回答是false,默认都是重要的。要是不赞成这样,可以特化,比如来特化int类型。自己的类型要自己定义重要不重要。typedef都是来回答问题的。一般重要是存在指针的场合,防止系统默认进行一些浅拷贝,这个时候可以令拷贝构造变成重要的,就是不采用系统默认的拷贝构造。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
C++11版本:现在的版本不用自己申明重要不重要,系统自己考虑。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
测试程序:来回答问题。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
string的测试:注意回答是1的部分。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
Foo类中只有数据,没有函数,所以和以前C语言struct一样。所以is_pod是1。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
只有要充当父类,才有可能使用virtual。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
拷贝构造,拷贝赋值,移动构造,移动赋值。delete是不要。default是要。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
用模板对类型进行操作。
对于is_void,其中remove_cv,是去除const和volatile这两个关键词。对于去除const,有两个版本的函数,第一个是泛化,来什么返回什么,第二个是偏特化,如果传入的类型有const,则把const去掉。去掉volatile的实现类似。
接下来_is_void_helper也是有两个版本,一个是泛化,泛化回答的是false;一个是偏特化,偏特化回答的是true。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
is_integral类似:一个是泛化,泛化回答的是false;一个是偏特化,偏特化回答的是true。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
这些函数找不到,应该是由编译器完成的。当深入class,编译器会帮忙。
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现
侯捷C++ stl体系结构与源码剖析:traits(萃取器)的实例及底层实现

相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2021-12-12
  • 2021-07-14
  • 2021-04-05
  • 2022-12-23
  • 2022-12-23
  • 2021-05-12
猜你喜欢
  • 2021-08-01
  • 2021-11-28
  • 2021-09-21
  • 2021-04-13
  • 2021-09-13
  • 2021-12-19
  • 2021-07-13
相关资源
相似解决方案