2012-08-30 3 views
2

Я использую GCC 4.1.2 на linux, а STL должен быть SGI STL. После того как я написал:Почему я не могу использовать адаптер функции compose2?

#include <functional> 
std::find_if(PirateFlush, PirateFlush + size, 
       compose2(std::logical_and<bool>(), bind2nd(std::greater<UInt32>(), time), 
        bind2nd(std::less<UInt32>(), now))); 

компилятор сказал:

ошибка: «compose2» был не объявлен в этой области

чем дело?

+1

+1 для 'PirateFlush'. Промойте этих пиратов, матерей. –

+1

Что заставляет вас думать, что это SGI STL? Вы сами установили его? – juanchopanza

ответ

6

compose2 не является стандартным и не является ни глобальным, ни std пространствами имен.

gcc поставляется с некоторыми нестандартными расширениями SGI в пространстве имен __gnu_cxx.

Используйте __gnu_cxx::compose2, или boost имеет многие из этих предопределенных.

-nick