forked from boostorg/fusion
@ -9,17 +9,17 @@
|
||||
#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105
|
||||
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/type_traits/is_base_of.hpp>
|
||||
#include <boost/mpl/is_sequence.hpp>
|
||||
#include <boost/mpl/and.hpp>
|
||||
#include <boost/mpl/not.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template <typename T>
|
||||
struct is_mpl_sequence
|
||||
: mpl::and_<
|
||||
mpl::not_<is_base_of<sequence_root, T> >
|
||||
mpl::not_<is_convertible<T, from_sequence_convertible_type> >
|
||||
, mpl::is_sequence<T> >
|
||||
{};
|
||||
}}}
|
||||
|
@ -7,12 +7,13 @@
|
||||
#if !defined(FUSION_IS_SEQUENCE_05052005_1002)
|
||||
#define FUSION_IS_SEQUENCE_05052005_1002
|
||||
|
||||
#include <boost/type_traits/is_base_of.hpp>
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/fusion/support/tag_of.hpp>
|
||||
#include <boost/mpl/is_sequence.hpp>
|
||||
#include <boost/mpl/or.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
@ -29,7 +30,9 @@ namespace boost { namespace fusion
|
||||
struct is_sequence_impl
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply : is_base_of<sequence_root, Sequence> {};
|
||||
struct apply
|
||||
: is_convertible<Sequence, detail::from_sequence_convertible_type>
|
||||
{};
|
||||
};
|
||||
|
||||
template <>
|
||||
|
@ -12,10 +12,14 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct sequence_root {};
|
||||
namespace detail
|
||||
{
|
||||
struct from_sequence_convertible_type
|
||||
{};
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
struct sequence_base : sequence_root
|
||||
struct sequence_base
|
||||
{
|
||||
Sequence const&
|
||||
derived() const
|
||||
@ -28,6 +32,11 @@ namespace boost { namespace fusion
|
||||
{
|
||||
return static_cast<Sequence&>(*this);
|
||||
}
|
||||
|
||||
operator detail::from_sequence_convertible_type()const
|
||||
{
|
||||
return detail::from_sequence_convertible_type();
|
||||
}
|
||||
};
|
||||
|
||||
struct fusion_sequence_tag;
|
||||
|
Reference in New Issue
Block a user