Kri*_*ato 11 c++ templates metaprogramming type-traits
我知道他们编码有关您实例化它们的类型的信息,但它们如何工作?比如说,类型特征std::is_class.它是如何工作的?所有的实现看起来都像空结构,我必须承认我正在挠头.
这些名称看起来足够描述,所以我可以理解它们的意思,但是什么是使用类型特征的典型场景?
我找不到关于这个主题的介绍性资源(或关于SO的问题).指针将不胜感激.
一些类型特征,比如std::is_class使用编译器内在函数(又称内置函数).没有编译器的特殊支持,你不能自己编写这些文件.
类型特征在泛型上下文中非常有用 - 您可能希望根据类型的属性对事物进行特化,或者对模板参数施加限制.例如,当迭代器是指向POD的指针时,std::copy可以在std::memcpy内部使用而不是显式循环.这可以通过SFINAE实现.