一个判别式(predicate)是一个返回值为bool类型(或者能够隐式地转换为bool类型)的函数。函数
一个纯函数(pure function)是指返回值仅仅依赖于其参数的函数。纯函数所能访问的数据应该仅局限于参数以及常量(在函数生命期内不会被改变设计
判别式类(predicate class)是一个函数子类,它的operator()函数是一个判别式,也就说是,它的operator()返回true或者false。对象
一个精心设计的判别式类应该保证其operator()函数彻底独立于mutable数据成员、非const的局部static对象、非const的类static对象、名字空间域中的非const对象,以及非const的全局对象。io
究其缘由就是由于是值传递的,若是不是纯函数,屡次调用判别式会被外部影响。table