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,它似乎不是。这可能是机器/编译器相关的东西吗?
被
<initializer_list>列入<iostream>?
它没有指定,也没有保证。
但是,也不能保证不包括在内。任何标准头可以包括任何其他标准头或系统头。您不应该依赖这种传递包含,因为另一个(版本的)标准库可能没有这样的包含。同样通常也适用于所有第三方标头。只有在记录和保证的情况下才依赖传递包含。