c++ - <type_traits> 头文件中的某些实现在哪里?

标签 c++

我在 头文件中看到了一些实现,但是有些实现我找不到,像这样:

// 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/

相关文章:

c++ - 多个函数调用对相同的输入参数返回不同的结果

c++ - is_same_template 在模板别名上的奇怪行为

c++ - 将 dll 库导入 CodeBlocks 链接器时遇到问题

c++ - 我应该使用什么 STL 容器来行走一棵树?

c++ - 为什么 MB_CUR_MAX 未定义?

c++ - win32 应用程序是否只有一个消息循环?还是每个窗口一个消息循环?

c++ - cocos2d-x beta3 LayerColor 不改变背景色

c++ - 错误 C2535 : 'ManagedArray::ManagedArray(void)'

c++ - 使用 char* 和 std::list 将数据结构写入二进制文件

c++ - 文件输出中出现错误字符