C ++ - std :: list头中_List_node_base的成员函数的实现在哪里

时间:2016-05-20 05:19:52

标签: c++ stl

我在Ubuntu 14.04 x86中仔细阅读C ++ STL的源文件。在调用std::list::_M_insert对象_M_hook的{​​{1}}处,我找不到_List_node_base的定义。我尝试_M_hook整个/ usr / include和grep来处理包含g++ -E的源文件,但没有任何有趣的内容。

也许实现已嵌入到某些二进制文件中,如lib文件,因为<list>(在/usr/include/c++/4.8/bits/stl_list.h:77中定义)不是模板类。事实上,不仅struct _List_node_base而且其他成员如_M_hook_M_reverse,我也无法挖掘出他们的C ++来源。

不知道我是否遗漏了包含实施内容的内容。或者它们是否真的预编译成二进制文件?

2 个答案:

答案 0 :(得分:3)

你是对的;该方法确实已编译到库中。您可以在git repo here中看到实现。

答案 1 :(得分:0)

它们在libstdc ++的list.cc文件中定义;它在此处的src/c++98子目录中。

您可以在主github镜像here上查看list.cc_M_hook的定义(当前)在第126行;您可以here查看它。