2

SunStudioコンパイラを使用しているSolarisで問題が発生しました。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++を使用する両方で問題ありません。誰かが何が起こっているのか知っていますか?ありがとう !

4

1 に答える 1

0

-library=stlport4標準C++ライブラリは標準に準拠していないため、を使用してビルドしてみてください。詳細については、 http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/cplusplus-faq-355066.html#LibComp5を参照してください。

于 2012-09-25T10:20:07.940 に答える