使用Solaris CC的std::BinaryPredicate的问题

Issue with std::BinaryPredicate using Solaris CC

本文关键字:BinaryPredicate 问题 Solaris std 使用 CC      更新时间:2023-10-16

我在Solaris上使用Sun Studio编译器有一个问题。它似乎与libCstd有关。

考虑以下代码:

#include <list>
static bool f(double fFreq1, double fFreq2) { return false; }
int main()
{
    std::list< double > l;
    l.unique(f);
}

我得到的错误信息是:

"uniq.cpp", line 6: Error: Could not find a match for std::list<double>::unique(bool(double,double)) needed in main().

但是当我使用引用而不是值时,它编译得很好:

#include <list>
static bool f(const double& fFreq1, const double& fFreq2) { return false; }
int main()
{
    std::list< double > l;
    l.unique(f);
}

编译可以同时使用g++。有人知道是怎么回事吗?谢谢!

尝试使用-library=stlport4作为标准c++库来构建不符合标准的库。详见http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/cplusplus-faq-355066.html#LibComp5