termux-packages/packages/boost/boost-function-support-fn.c...

42 lines
1.3 KiB
Diff

https://github.com/boostorg/function/commit/7ca2310b15e387258e97e4cd16887f5ee4906b28
--- a/boost/function/function_base.hpp
+++ b/boost/function/function_base.hpp
@@ -25,6 +25,7 @@
#include <boost/type_traits/alignment_of.hpp>
#include <boost/type_traits/enable_if.hpp>
#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_function.hpp>
#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
@@ -652,7 +653,8 @@ class function_base
}
template<typename F>
- bool contains(const F& f) const
+ typename boost::enable_if_< !boost::is_function<F>::value, bool >::type
+ contains(const F& f) const
{
if (const F* fp = this->template target<F>())
{
@@ -662,6 +664,19 @@ class function_base
}
}
+ template<typename Fn>
+ typename boost::enable_if_< boost::is_function<Fn>::value, bool >::type
+ contains(Fn& f) const
+ {
+ typedef Fn* F;
+ if (const F* fp = this->template target<F>())
+ {
+ return function_equal(*fp, &f);
+ } else {
+ return false;
+ }
+ }
+
#if defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3
// GCC 3.3 and newer cannot copy with the global operator==, due to
// problems with instantiation of function return types before it