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

标签 c++

我注意到我的 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/

相关文章:

c++ - 我应该停止使用 auto_ptr 吗?

C++ DLL 不能在不同的机器上运行

c++ - 当我尝试从文件中读取时出现访问冲突写入位置错误

c++ - 创建具有固定顶部坐标的可调整大小的窗口

c++ - 我的 C++ 程序在计算欧拉数的级数时遇到问题

c++ - 在 C++ 中检测小声音效果

c++ - 线程调用函数模板时的编译错误(对于默认参数)

c++ - vector::erase() 未按预期工作

c++ - 为什么我的 fortran 例程将不正确的值传递给我的 C++ 函数?

c++ - 调用库时崩溃