/* Boost.MultiIndex test for key extractors.
*
- * Copyright 2003-2015 Joaquin M Lopez Munoz.
+ * Copyright 2003-2019 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
bool bool_mem_fun_const()const{return true;}
bool bool_mem_fun(){return false;}
+ bool bool_mem_fun_volatile()volatile{return false;}
+ bool bool_mem_fun_cv()const volatile{return true;}
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+
+ bool bool_mem_fun_cref()const&{return true;}
+ bool bool_mem_fun_ref()&{return false;}
+ bool bool_mem_fun_vref()volatile&{return false;}
+ bool bool_mem_fun_cvref()const volatile&{return true;}
+
+#endif
static bool bool_global_fun(test_class){return true;}
static bool bool_global_fun_const_ref(const test_class&){return false;}
typedef BOOST_MULTI_INDEX_MEMBER(test_class,int,int_member) key_m;
typedef BOOST_MULTI_INDEX_MEMBER(test_class,const int,int_member) ckey_m;
typedef BOOST_MULTI_INDEX_MEMBER(test_class,const int,int_cmember) key_cm;
+typedef BOOST_MULTI_INDEX_MEM_FUN(test_class,bool,bool_mem_fun) key_mf;
typedef BOOST_MULTI_INDEX_CONST_MEM_FUN(
test_class,bool,bool_mem_fun_const) key_cmf;
-typedef BOOST_MULTI_INDEX_MEM_FUN(test_class,bool,bool_mem_fun) key_mf;
+typedef volatile_mem_fun<
+ test_class,bool,&test_class::bool_mem_fun_volatile> key_vmf;
+typedef cv_mem_fun<test_class,bool,&test_class::bool_mem_fun_cv> key_cvmf;
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+
+typedef cref_mem_fun<
+ test_class,bool,&test_class::bool_mem_fun_cref> key_crmf;
+typedef ref_mem_fun<test_class,bool,&test_class::bool_mem_fun_ref> key_rmf;
+typedef vref_mem_fun<
+ test_class,bool,&test_class::bool_mem_fun_vref> key_vrmf;
+typedef cvref_mem_fun<
+ test_class,bool,&test_class::bool_mem_fun_cvref> key_cvrmf;
+
+#endif
+
typedef global_fun<test_class,bool,&test_class::bool_global_fun> key_gf;
typedef global_fun<
const test_class&,bool,
key_cm k_cm;
key_cmf k_cmf;
key_mf k_mf;
+ key_vmf k_vmf;
+ key_cvmf k_cvmf;
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ key_crmf k_crmf;
+ key_rmf k_rmf;
+ key_vrmf k_vrmf;
+ key_cvrmf k_cvrmf;
+#endif
key_gf k_gf;
key_gcrf k_gcrf;
key_grf k_grf;
BOOST_TEST(k_cmf(tr));
BOOST_TEST(k_cmf(ctr));
+ BOOST_TEST(k_cvmf(tr));
+ BOOST_TEST(k_cvmf(ctr));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(tr));
+ BOOST_TEST(k_crmf(ctr));
+ BOOST_TEST(k_cvrmf(tr));
+ BOOST_TEST(k_cvrmf(ctr));
+#endif
#if !defined(BOOST_NO_SFINAE)
BOOST_TEST(k_cmf(td));
BOOST_TEST(k_cmf(ctdr));
+ BOOST_TEST(k_cvmf(td));
+ BOOST_TEST(k_cvmf(ctdr));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(td));
+ BOOST_TEST(k_crmf(ctdr));
+ BOOST_TEST(k_cvrmf(td));
+ BOOST_TEST(k_cvrmf(ctdr));
+#endif
#endif
BOOST_TEST(k_cmf(tp));
BOOST_TEST(k_cmf(ctp));
+ BOOST_TEST(k_cvmf(tp));
+ BOOST_TEST(k_cvmf(ctp));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(tp));
+ BOOST_TEST(k_crmf(ctp));
+ BOOST_TEST(k_cvrmf(tp));
+ BOOST_TEST(k_cvrmf(ctp));
+#endif
#if !defined(BOOST_NO_SFINAE)
BOOST_TEST(k_cmf(tdp));
BOOST_TEST(k_cmf(ctdp));
+ BOOST_TEST(k_cvmf(tdp));
+ BOOST_TEST(k_cvmf(ctdp));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(tdp));
+ BOOST_TEST(k_crmf(ctdp));
+ BOOST_TEST(k_cvrmf(tdp));
+ BOOST_TEST(k_cvrmf(ctdp));
+#endif
#endif
BOOST_TEST(k_cmf(tpp));
BOOST_TEST(k_cmf(ctpp));
BOOST_TEST(k_cmf(tap));
BOOST_TEST(k_cmf(ctap));
+ BOOST_TEST(k_cvmf(tpp));
+ BOOST_TEST(k_cvmf(ctpp));
+ BOOST_TEST(k_cvmf(tap));
+ BOOST_TEST(k_cvmf(ctap));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(tpp));
+ BOOST_TEST(k_crmf(ctpp));
+ BOOST_TEST(k_crmf(tap));
+ BOOST_TEST(k_crmf(ctap));
+ BOOST_TEST(k_cvrmf(tpp));
+ BOOST_TEST(k_cvrmf(ctpp));
+ BOOST_TEST(k_cvrmf(tap));
+ BOOST_TEST(k_cvrmf(ctap));
+#endif
BOOST_TEST(k_cmf(tw));
BOOST_TEST(k_cmf(ctw));
+ BOOST_TEST(k_cvmf(tw));
+ BOOST_TEST(k_cvmf(ctw));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(k_crmf(tw));
+ BOOST_TEST(k_crmf(ctw));
+ BOOST_TEST(k_cvrmf(tw));
+ BOOST_TEST(k_cvrmf(ctw));
+#endif
BOOST_TEST(!k_mf(tr));
+ BOOST_TEST(!k_vmf(tr));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(!k_rmf(tr));
+ BOOST_TEST(!k_vrmf(tr));
+#endif
#if !defined(BOOST_NO_SFINAE)
BOOST_TEST(!k_mf(td));
+ BOOST_TEST(!k_vmf(td));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(!k_rmf(td));
+ BOOST_TEST(!k_vrmf(td));
+#endif
#endif
BOOST_TEST(!k_mf(tp));
+ BOOST_TEST(!k_vmf(tp));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(!k_rmf(tp));
+ BOOST_TEST(!k_vrmf(tp));
+#endif
#if !defined(BOOST_NO_SFINAE)
BOOST_TEST(!k_mf(tdp));
+ BOOST_TEST(!k_vmf(tdp));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(!k_rmf(tdp));
+ BOOST_TEST(!k_vrmf(tdp));
+#endif
#endif
BOOST_TEST(!k_mf(tpp));
BOOST_TEST(!k_mf(tap));
BOOST_TEST(!k_mf(tw));
+ BOOST_TEST(!k_vmf(tpp));
+ BOOST_TEST(!k_vmf(tap));
+ BOOST_TEST(!k_vmf(tw));
+
+#if !defined(BOOST_NO_CXX11_REF_QUALIFIERS)
+ BOOST_TEST(!k_rmf(tpp));
+ BOOST_TEST(!k_rmf(tap));
+ BOOST_TEST(!k_rmf(tw));
+ BOOST_TEST(!k_vrmf(tpp));
+ BOOST_TEST(!k_vrmf(tap));
+ BOOST_TEST(!k_vrmf(tw));
+#endif
BOOST_TEST(k_gf(tr));
BOOST_TEST(k_gf(ctr));