<initializer_list> 是否包含在 <iostream> 中?

iam*_*gan 0 c++ iostream initializer-list

我知道下面的代码块编译

#include<initializer_list>
int main()
{
    std::initializer_list<int> li = {1,2,3,4};
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这也会编译

#include<iostream>
int main()
{
    std::initializer_list<int> li = {1,2,3,4};
}
Run Code Online (Sandbox Code Playgroud)

<initializer_list>列入<iostream>?根据this,它似乎不是。这可能是机器/编译器相关的东西吗?

eer*_*ika 8

<initializer_list>列入<iostream>

它没有指定,也没有保证。

但是,也不能保证不包括在内。任何标准头可以包括任何其他标准头或系统头。您不应该依赖这种传递包含,因为另一个(版本的)标准库可能没有这样的包含。同样通常也适用于所有第三方标头。只有在记录和保证的情况下才依赖传递包含。