头文件中的一些实现在哪里<type_traits>?



我在<type_traits>头文件,但有些实现我找不到,比如:

// 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的实现。有人知道实现在哪里吗?我使用名为visualstudio2019的IDE。

这些符号指的是保留的内置令牌,这些令牌由编译器本身识别和评估。编译器知道__is_class的含义,对给定类型进行求值,然后使用求值结果。

碰巧的是,gcc在这里很好地记录了它的内置符号(这是针对gcc 10.2的,其他版本的gcc几乎有相同的页面(。编辑:这是VS的同一页——从外观上看,几乎是一样的。

在该页面上,您将偶然发现为gcc定义了__is_class函数。其他编译器倾向于以相同的方式工作,可能只是符号本身的名称不同。

总之,在任何头文件中都找不到正式定义的__is_class和其他内容。这些函数、类等被烘焙到编译器本身中。

相关内容

  • 没有找到相关文章

最新更新