我在
// STRUCT TEMPLATE is_class
template <class _Ty>
struct is_class : bool_constant<__is_class(_Ty)> {}; // determine whether _Ty is a class
template <class _Ty>
_INLINE_VAR constexpr bool is_class_v = __is_class(_Ty);
我想知道 __is_class 的实现。 有人知道实现在哪里吗?我使用名为 visual studio 2019 的 IDE。
最佳答案
这些符号指的是保留的内置标记,由编译器本身识别和评估。编译器知道 __is_class
的含义,针对给定类型对其进行评估,然后使用评估结果。
碰巧 gcc 很好地记录了它的内置符号 here (这是针对 gcc 10.2 的,其他版本的 gcc 也有几乎相同的页面)。编辑:here's the same page for VS -- 从外观上看,几乎是同一回事。
在那个页面上,您会碰巧找到为 gcc 定义的 __is_class
函数。其他编译器倾向于使事情以相同的方式工作,可能仅在符号本身的名称上有所不同。
总而言之,您不会在任何头文件中找到正式定义的 __is_class
和其他内容。这些函数、类等。阿尔。被烘焙到编译器本身。
关于c++ - <type_traits> 头文件中的某些实现在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64904711/