C ++:为什么iostream中包含std :: greater <T>()?

时间:2019-10-06 19:17:30

标签: c++

我注意到包含std::greater<T>()的C ++代码编译得很好,没有包含<functional>。这让我开始思考。事实证明,这段代码可以编译:

#include <iostream>
int main(){
    std::greater<T>();
}

但这不是:

int main(){           //<iostream> doesn´t get included
    std::greater<T>();
}

据我所知<iostream>包含std::greater,这对我来说似乎有些奇怪。有人可以解释为什么std::greater<T>()包含在<iostream>中吗?

如果这很重要,我将在C ++ 14中使用g ++(x86_64-posix-seh-rev0,由MinGW-W64项目构建)8.1.0。

1 个答案:

答案 0 :(得分:3)

ISO标准不保证。该标头的实现使用它。 您可能还会发现<utility><string>(可能作为<ios><iosfwd>的一部分),<memory>和某些<type_traits>可从<iostream>获得。

五个有保证的标头是(自C ++ 11起):ios,iosfwd,istream,ostream,streambuf。