使用Solaris CC的std :: BinaryPredicate问题

时间:2011-09-22 16:12:59

标签: c++ solaris sunstudio

我在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 ++编译都可以。有谁知道发生了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用-library=stlport4构建,因为标准C ++库不符合标准。有关详细信息,请参阅http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/cplusplus-faq-355066.html#LibComp5