我注意到我的 C++ 代码包含 std::greater<T>()
编译良好,不包括 <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>
中?
如果这很重要,我正在使用 g++(x86_64-posix-seh-rev0,由 MinGW-W64 项目构建)8.1.0 和 C++14。
最佳答案
它不受 ISO 标准的保证。该 header 的实现使用它。
您还可能会发现 <utility>
, <string>
(可能包含在 <ios>
或 <iosfwd>
中),<memory>
还有一些<type_traits>
可从 <iostream>
获得.
五个有保证的 header 是(C++11 起):ios、iosfwd、istream、ostream、streambuf。
关于C++:为什么 std::greater<T>() 包含在 iostream 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260506/