我需要一个函数来为我的类创建一个用于显示项目的策略。例如:将一个一元谓词传递给C++中的一个函数
SetDisplayPolicy(BOOLEAN_PRED_T f)
这是假设BOOLEAN_PRED_T是函数指针一些布尔谓词类型,如:
typedef bool (*BOOLEAN_PRED_T) (int);
我感兴趣的只是在如:显示的东西时,所传递的谓词是真,当它是假的时候不显示。
上面的例子适用于函数返回布尔和采取一个int,但我需要一个非常通用的指针SetDisplayPolicy参数,所以我想到UnaryPredicate,但它是与增强相关的。我如何将一元谓词传递给STL/C++中的函数? unary_function< bool,T >
将无法正常工作,因为我需要一个bool作为返回值,但我想要求用户只用于“一元函数返回布尔”,在最通用的方法。
我想获得我自己的类型为:
template<typename T>
class MyOwnPredicate : public std::unary_function<bool, T>{};
莫非是一个好方法?
对于那些在2015年及以后阅读的人来说......使用通用std :: function <>代替std :: unary_function <>可能会更好,因为后者将在C++ 17中被弃用 – plexoos 2015-10-13 02:22:01