如何让STL std :: rel_ops与使用STLPort的Digital Mars C ++编译器一起使用?

时间:2012-08-01 03:00:25

标签: c++ stl stlport

我在Windows上安装了Digital Mars C / C ++编译器。这是完整付费版本,包括预先构建的STLPort)它是dm852.zip,但dmc报告8.42n。 STLPort在自述文件中说4.5.3版。

根据使用STLPort的要求,我更新了sc.ini:

INCLUDE = “@%P%.. \的STLport \ stlport的”; “%@ P%.. \包括”;%INCLUDE%

以下测试程序使用MinGW g ++进行编译,但dmc会给出注释中显示的错误。

#include <assert.h>
#include <utility>
using namespace std;
using namespace std::rel_ops;

class C {
    int x;
public:
    C(int x_) : x(x_)
        { }
    bool operator<(const C& other) const
        { return x < other.x; }
    bool operator==(const C& other) const
        { return x == other.x; }
};

int main() {
    C a(1);
    C b(1);
    C c(2);

    assert(a == b);
    assert(b != c); // Error: illegal operand types Had: C and C
    assert(a < c);
    assert(c > a); // Error: illegal operand types Had: C and C
    return 0;
}

我可以在dm / stl / stl_relops.h中找到实际的relops代码

但我不确定dm / stlport / stlport / utility如何包含此代码

数字火星版STLPort似乎配置为不使用rel_ops命名空间(dm / stlport / stlport / config / stl_dm.h中的#define _STLP_NO_RELOPS_NAMESPACE),但省略“using namespace std :: rel_ops”没有帮助

似乎这必定是某种配置问题,但我无法弄明白。

0 个答案:

没有答案