【发布时间】:2015-05-18 05:09:13
【问题描述】:
我很想了解某些 C++ 功能的工作原理。我正在尝试学习诸如 std::function 之类的 C++11 概念,但我一直在碰壁,例如我不理解的 INVOKE(function, arguments, return)。人们告诉我,“哦,忽略它并使用 auto”,但我想真正深入了解 C++ 及其标准库的工作原理,所以我想找到标准库的源代码。
我猜 C++ 标准库在某种程度上与 C 标准库以及 std::iostream 之类的东西在最低级别的杂乱汇编/二进制实现有关,但我对更高级别的东西感兴趣像智能指针和 std::function 这样的抽象。鉴于许多 C++11 库曾经是 Boost 库,我如何才能找到 C++ 标准库实现的源代码?
【问题讨论】:
-
找到源代码是一件几乎微不足道的事情,但理解它可能是一个挑战。问题是代码需要非常严格的规则并同时具有高性能,因此您需要以可读性为代价进行大量优化。关于
std::function,考虑自己写一个,包括std::bind的代码。这将为您提供有关该问题的宝贵见解。 -
c++ stl 主要在头文件上实现,所以一个很好的开始是跳转到你的 IDE 中的定义或类似 cscope 的东西
-
STL 不是 C++ 标准库,特别是
std::function不是 STL 的一部分,@bolov。 -
如果你有IDE,在地方,如#include
头部点击鼠标查找声明或实现 -
@UlrichEckhardt 我知道,我只是懒得输入 C++ 标准库,也不太关心我如何称呼它,只要消息的重点是明确的。但你是对的。该死的你让我打字这么多:)
标签: c++ c++11 standard-library