From c15dd57405bb39b2147c0152e4fe3a7edcba0d10 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sun, 19 Dec 2010 18:35:52 +0000 Subject: [PATCH] Fusion: mask fusion::begin/fusion::end with SFINAE, fixes #4028 [SVN r67352] --- include/boost/fusion/sequence/intrinsic/begin.hpp | 14 ++++++++++++-- include/boost/fusion/sequence/intrinsic/end.hpp | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index 5dbe0c40..c9ece3ab 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -8,6 +8,8 @@ #define FUSION_BEGIN_04052005_1132 #include +#include +#include namespace boost { namespace fusion { @@ -57,14 +59,22 @@ namespace boost { namespace fusion } template - inline typename result_of::begin::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::begin + >::type const begin(Sequence& seq) { return result_of::begin::call(seq); } template - inline typename result_of::begin::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::begin + >::type const begin(Sequence const& seq) { return result_of::begin::call(seq); diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index 98a554e3..02476710 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -8,6 +8,8 @@ #define FUSION_END_04052005_1141 #include +#include +#include namespace boost { namespace fusion { @@ -57,14 +59,22 @@ namespace boost { namespace fusion } template - inline typename result_of::end::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::end + >::type const end(Sequence& seq) { return result_of::end::call(seq); } template - inline typename result_of::end::type const + inline typename + lazy_enable_if< + traits::is_sequence + , result_of::end + >::type const end(Sequence const& seq) { return result_of::end::call(seq);