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);