我在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 ++编译都可以。有谁知道发生了什么?谢谢!
答案 0 :(得分:0)
尝试使用-library=stlport4
构建,因为标准C ++库不符合标准。有关详细信息,请参阅http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/cplusplus-faq-355066.html#LibComp5。