我在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'未在此范围内声明
怎么回事?
答案 0 :(得分:6)
compose2
不是标准的,既不在全局名称空间也不在std
名称空间中。
gcc在__gnu_cxx
命名空间中提供了一些非标准的SGI扩展。
使用__gnu_cxx::compose2
,或者有许多预定义提升。
-nick