为什么我不能使用函数适配器compose2?

时间:2012-08-30 04:47:59

标签: c++ stl sgi

我在linux上使用GCC 4.1.2,STL必须是SGI STL。 在我写完之后:

#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 个答案:

答案 0 :(得分:6)

compose2不是标准的,既不在全局名称空间也不在std名称空间中。

gcc在__gnu_cxx命名空间中提供了一些非标准的SGI扩展。

使用__gnu_cxx::compose2,或者有许多预定义提升。

-nick