Проблема с std::BinaryPredicate при использовании Solaris CC

У меня возникла проблема с 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++. Кто-нибудь знает что происходит ? Спасибо !


person ghi    schedule 22.09.2011    source источник
comment
Возможно ошибка в реализации библиотеки. Можете ли вы найти соответствующую часть в заголовке списка?   -  person Kerrek SB    schedule 22.09.2011
comment
К сожалению, не могу найти заголовочный файл.   -  person ghi    schedule 22.09.2011
comment
Как насчет чего-то вроде grep -rH searchTerm /usr/include ?   -  person Georg Fritzsche    schedule 22.09.2011


Ответы (1)


Попробуйте выполнить сборку с помощью -library=stlport4, так как стандартная библиотека C++ не соответствует стандартам. См. http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/cplusplus-faq-355066.html#LibComp5 для получения дополнительной информации.

person grantc    schedule 25.09.2012