From 5c3b1e0a61d83d7a3c70fb882c7e0918777f0e00 Mon Sep 17 00:00:00 2001 From: Andrei Lebedev Date: Sun, 5 May 2019 19:52:01 +0300 Subject: [PATCH] Deduce reference in boost::fusion::for_each Signed-off-by: Andrei Lebedev --- include/soci/bind-values.h | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/include/soci/bind-values.h b/include/soci/bind-values.h index eee416e..e84fb0e 100644 --- a/include/soci/bind-values.h +++ b/include/soci/bind-values.h @@ -13,6 +13,13 @@ #ifdef SOCI_HAVE_BOOST # include # include +# include + +# if BOOST_VERSION >= 106800 +# define SOCI_BOOST_FUSION_FOREACH_REFERENCE & +# else +# define SOCI_BOOST_FUSION_FOREACH_REFERENCE +# endif #endif // SOCI_HAVE_BOOST #include @@ -83,13 +90,19 @@ private: template void exchange_(use_container const &uc, boost::mpl::true_ * /* fusion sequence */) { - boost::fusion::for_each(uc.t, use_sequence(*this, uc.ind)); + use_sequence f(*this, uc.ind); + boost::fusion::for_each + SOCI_BOOST_FUSION_FOREACH_REFERENCE>(uc.t, f); } template void exchange_(use_container const &uc, boost::mpl::true_ * /* fusion sequence */) { - boost::fusion::for_each(uc.t, use_sequence(*this)); + use_sequence f(*this); + boost::fusion::for_each + SOCI_BOOST_FUSION_FOREACH_REFERENCE>(uc.t, f); } #endif // SOCI_HAVE_BOOST @@ -173,13 +186,19 @@ private: template void exchange_(into_container const &ic, boost::mpl::true_ * /* fusion sequence */) { - boost::fusion::for_each(ic.t, into_sequence(*this, ic.ind)); + into_sequence f(*this, ic.ind); + boost::fusion::for_each + SOCI_BOOST_FUSION_FOREACH_REFERENCE>(ic.t, f); } template void exchange_(into_container const &ic, boost::mpl::true_ * /* fusion sequence */) { - boost::fusion::for_each(ic.t, into_sequence(*this)); + into_sequence f(*this); + boost::fusion::for_each + SOCI_BOOST_FUSION_FOREACH_REFERENCE>(ic.t, f); } #endif // SOCI_HAVE_BOOST -- 2.20.1.windows.1