C++ 'std::greater'或'std::less_equal'的类型是什么` 模板结构更大:二进制函数{ 布尔运算符()(常数T&x,常数T&y)常数 {返回x>y;} }; 模板结构逻辑函数和:二进制函数{ 布尔运算符()(常数T&x,常数T&y)常数 {返回x&&y;} }; // (i>5&&i

C++ 'std::greater'或'std::less_equal'的类型是什么` 模板结构更大:二进制函数{ 布尔运算符()(常数T&x,常数T&y)常数 {返回x>y;} }; 模板结构逻辑函数和:二进制函数{ 布尔运算符()(常数T&x,常数T&y)常数 {返回x&&y;} }; // (i>5&&i,c++,stl,C++,Stl,boost binder比您预期的更神奇。当其中一个绑定参数本身是绑定表达式时,它将在调用过程中执行该表达式并使用结果。在这种情况下,内部绑定表达式是对std::less和std::greater的调用,这两种调用都会产生一个bool,然后它被传递到std::logical_和boost绑定器比您预期的更神奇。当其中一个绑定参数本身是绑定表达式时,它将在调用期间执行该表达式并使用结果。在这种情况下,内部绑定表达式是对的调用de>std::less和std::greater,两者都会生成一个boo

boost binder比您预期的更神奇。当其中一个绑定参数本身是绑定表达式时,它将在调用过程中执行该表达式并使用结果。在这种情况下,内部绑定表达式是对
std::less
std::greater
的调用,这两种调用都会产生一个
bool
,然后它被传递到
std::logical_和

boost绑定器比您预期的更神奇。当其中一个绑定参数本身是绑定表达式时,它将在调用期间执行该表达式并使用结果。在这种情况下,内部绑定表达式是对的调用de>std::less
std::greater
,两者都会生成一个
bool
,然后将其传递给
std::logical\u和
操作符()的返回类型为bool
std::greater
std::greater
。它是一个函数对象。因此:

template <class T> struct greater : binary_function <T,T,bool> {
  bool operator() (const T& x, const T& y) const
    {return x>y;}
};

template <class T> struct logical_and : binary_function <T,T,bool> {
  bool operator() (const T& x, const T& y) const
    {return x&&y;}
};

// (i > 5 && i <=10)
countBoost = std::count_if(vecInts.begin(), vecInts.end(),
                           boost::bind(std::logical_and<bool>(), 
                                                        ^^^^ // ???? Why ????
                                    boost::bind(std::greater<int>(),    _1, 5),
                                    boost::bind(std::less_equal<int>(), _1, 10))
                          );
std::更大的g;

std::cout运算符()的返回类型为bool
std::greater
std::greater
。它是一个函数对象。因此:

template <class T> struct greater : binary_function <T,T,bool> {
  bool operator() (const T& x, const T& y) const
    {return x>y;}
};

template <class T> struct logical_and : binary_function <T,T,bool> {
  bool operator() (const T& x, const T& y) const
    {return x&&y;}
};

// (i > 5 && i <=10)
countBoost = std::count_if(vecInts.begin(), vecInts.end(),
                           boost::bind(std::logical_and<bool>(), 
                                                        ^^^^ // ???? Why ????
                                    boost::bind(std::greater<int>(),    _1, 5),
                                    boost::bind(std::less_equal<int>(), _1, 10))
                          );
std::更大的g;
标准::cout