我理解他们编码有关您实例化它们的类型的信息,但是它们是如何工作的?例如,假设类型特征std::is_class
。它是如何工作的?所有的实现看起来都像空结构,我必须承认我在摸不着头脑。
名称看起来足够描述,所以我可以理解它们的含义,但使用类型特征的典型场景是什么?
我找不到关于这个主题的介绍性资源(或关于SO的问题)。指针将不胜感激。
答案 0 :(得分:6)
某些类型特征,如std::is_class
,只使用编译器内在函数(又称内置函数)。没有编译器的特别支持,你不能自己编写这些文件。
类型特征在泛型上下文中最常用 - 您可能希望根据类型的属性对事物进行特化,或对模板参数施加限制。例如,当迭代器是指向POD的指针时,std::copy
的实现可以在内部使用std::memcpy
而不是显式循环。这可以通过SFINAE实现。