]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/fusion/test/algorithm/count_if.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / fusion / test / algorithm / count_if.cpp
index d70628903e2cedce5e31c24b758a251a01b8a0a3..7555f6fcb07bae34c0e22988c03307e5eadb57c9 100644 (file)
@@ -9,28 +9,36 @@
 #include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/algorithm/query/count_if.hpp>
-#include <boost/lambda/lambda.hpp>
 #include <boost/mpl/vector_c.hpp>
 #include <functional>
 
+template <typename F> struct bind1st;
+template <template <typename> class F, typename T>
+struct bind1st<F<T> > : public F<T>
+{
+    T n;
+    bind1st(T n) : n(n) { }
+    bool operator()(T v) const { return F<T>::operator()(n, v); }
+};
+
 int
 main()
 {
     {
         boost::fusion::vector<int, short, double> t(1, 2, 3.3);
-        BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 2) == 1);
+        BOOST_TEST(boost::fusion::count_if(t, bind1st<std::equal_to<double> >(2)) == 1);
     }
 
     {
         boost::fusion::vector<int, short, double> t(1, 2, 3.3);
-        BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 3) == 0);
+        BOOST_TEST(boost::fusion::count_if(t, bind1st<std::equal_to<double> >(3)) == 0);
     }
 
     {
         typedef boost::mpl::vector_c<int, 1, 2, 3> mpl_vec;
         // Cannot use lambda here as mpl iterators return rvalues and lambda needs lvalues
-        BOOST_TEST(boost::fusion::count_if(mpl_vec(), std::bind2nd(std::less_equal<int>(), 2)) == 2);
-        BOOST_TEST(boost::fusion::count_if(mpl_vec(), std::bind2nd(std::greater<int>(), 2)) == 1);
+        BOOST_TEST(boost::fusion::count_if(mpl_vec(), bind1st<std::greater_equal<int> >(2)) == 2);
+        BOOST_TEST(boost::fusion::count_if(mpl_vec(), bind1st<std::less<int> >(2)) == 1);
     }
 
     return boost::report_errors();