2

我在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”未在此范围内声明

怎么了?

4

1 回答 1

6

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

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

Use__gnu_cxx::compose2或 boost 有许多预定义的。

-缺口

于 2012-08-30T05:19:24.053 回答