Tweaks for xpressive

[SVN r34928]
This commit is contained in:
Joel de Guzman
2006-08-23 02:37:18 +00:00
parent c31253d8c1
commit 5efba059ed
3 changed files with 13 additions and 7 deletions

View File

@ -24,6 +24,7 @@
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/or.hpp>
namespace boost { namespace fusion
{
@ -86,7 +87,12 @@ namespace boost { namespace fusion
template <typename Sequence>
explicit cons(
Sequence const& seq
, typename disable_if<is_convertible<Sequence, Car> >::type* dummy = 0)
, typename disable_if<
mpl::or_<
is_convertible<Sequence, cons> // use copy ctor instead
, is_convertible<Sequence, Car> // use copy to car instead
>
>::type* dummy = 0)
: car(*fusion::begin(seq))
, cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {}

View File

@ -18,13 +18,13 @@
namespace boost { namespace fusion
{
template <typename IStream, typename Sequence>
template <typename Sequence>
inline typename
enable_if<
fusion::traits::is_sequence<Sequence>
, IStream&
, std::istream&
>::type
operator>>(IStream& is, Sequence& seq)
operator>>(std::istream& is, Sequence& seq)
{
detail::read_sequence(is, seq);
return is;

View File

@ -18,13 +18,13 @@
namespace boost { namespace fusion
{
template <typename OStream, typename Sequence>
template <typename Sequence>
inline typename
enable_if<
fusion::traits::is_sequence<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;