我注意到包含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。
答案 0 :(得分:3)
ISO标准不保证。该标头的实现使用它。
您可能还会发现<utility>
,<string>
(可能作为<ios>
或<iosfwd>
的一部分),<memory>
和某些<type_traits>
可从<iostream>
获得。
五个有保证的标头是(自C ++ 11起):ios,iosfwd,istream,ostream,streambuf。