From 5efba059edb86f43b99dc30063a1abadad04a220 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 23 Aug 2006 02:37:18 +0000 Subject: [PATCH] Tweaks for xpressive [SVN r34928] --- include/boost/fusion/sequence/container/list/cons.hpp | 8 +++++++- include/boost/fusion/sequence/io/in.hpp | 6 +++--- include/boost/fusion/sequence/io/out.hpp | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index d79c379f..806c8f64 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -86,7 +87,12 @@ namespace boost { namespace fusion template explicit cons( Sequence const& seq - , typename disable_if >::type* dummy = 0) + , typename disable_if< + mpl::or_< + is_convertible // use copy ctor instead + , is_convertible // use copy to car instead + > + >::type* dummy = 0) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index 2766daee..f77e14e8 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -18,13 +18,13 @@ namespace boost { namespace fusion { - template + template inline typename enable_if< fusion::traits::is_sequence - , IStream& + , std::istream& >::type - operator>>(IStream& is, Sequence& seq) + operator>>(std::istream& is, Sequence& seq) { detail::read_sequence(is, seq); return is; diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index fd943547..d5b6fcc8 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -18,13 +18,13 @@ namespace boost { namespace fusion { - template + template inline typename enable_if< fusion::traits::is_sequence - , OStream& + , std::ostream& >::type - operator<<(OStream& os, Sequence const& seq) + operator<<(std::ostream& os, Sequence const& seq) { detail::print_sequence(os, seq); return os;