是否有任何保证C++系统头的依赖?

Qia*_*ian 5 c++

例如,在<algorithm>中,函数equal_range返回pair,因此我可以假设,如果我#include <algorithm>,<utility>#included?

mah*_*mah 5

从来没有保证包含其他标头所依赖的头文件.幸运的是,通常的做法(虽然不是100%的时候都不确定)标题可以防止多重包含 - 这意味着您可以根据需要多次#include它们而不会造成伤害.

  • 如果您使用没有包含警卫的(标准)库,请切换到其他库.跑! (8认同)

Bo *_*son 4

您应该始终包含您需要的内容,不能依赖于在另一个标头中包含同一组标头的所有实现。

在您的示例中,如果一个函数返回一对,您可以合理地确定该类pair已声明,但不需要实现包含<utility>.

事实上,完全使用标准中显示的头文件来实现标准库是不可能的,因为存在一些循环引用。实现必须将它们分成更小的部分,并将这些子标头包含在所需的<>标头中。

例如,GCC 团队正在努力最大限度地减少包含量,以加快编译时间。