从 class 模板继承需要 iostream

iostream required for inheriting from class template

从 class 模板(例如对)导出 class 时,我们似乎需要包含 iostream:

此代码有效:

#include <iostream>

class Vector: public std::pair<double,double> {
public:
    Vector() {}
    Vector(double a, double b): std::pair<double,double> (a,b) {}
};

int main
{
    return 0;
}

但是如果我们省略 #include <iostream> 它甚至不会编译:

5 error: expected template-name before '<' token

这种继承需要iostream的什么特性?

What feature of iostream is required for this kind of inheritance?

没有特色。只是在您的系统上 <iostream> 可能包括 <utility> header,其中定义了 std::pair。这意味着您得到了正确 header 的传递包含。标准 header 允许相互包含作为实现细节,但这不是可以移植依赖的东西。

你应该放弃恰好有效的错误 header,选择正确的。