forked from boostorg/fusion
ODR safe code
[SVN r35275]
This commit is contained in:
@ -19,6 +19,9 @@
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct random_access_traversal_tag;
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
@ -38,6 +41,15 @@ namespace boost { namespace fusion
|
||||
BOOST_MPL_ASSERT_NOT((is_same<category, random_access_traversal_tag>));
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct advance_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct advance_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct advance_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -13,6 +13,10 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
@ -21,6 +25,15 @@ namespace boost { namespace fusion
|
||||
template <typename Iterator>
|
||||
struct apply {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct deref_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct deref_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct deref_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -20,6 +20,9 @@
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct random_access_traversal_tag;
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
@ -36,6 +39,15 @@ namespace boost { namespace fusion
|
||||
BOOST_MPL_ASSERT_NOT((is_same<first_category, random_access_traversal_tag>));
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct distance_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct distance_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct distance_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -17,6 +17,10 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
@ -28,6 +32,15 @@ namespace boost { namespace fusion
|
||||
: is_same<typename add_const<I1>::type, typename add_const<I2>::type>
|
||||
{};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct equal_to_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct equal_to_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct equal_to_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -12,6 +12,10 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
@ -20,6 +24,15 @@ namespace boost { namespace fusion
|
||||
template <typename Iterator>
|
||||
struct apply {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct next_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct next_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct next_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -12,6 +12,10 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
@ -20,6 +24,15 @@ namespace boost { namespace fusion
|
||||
template <typename Iterator>
|
||||
struct apply {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct prior_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct prior_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct prior_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
@ -13,6 +13,10 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
@ -21,6 +25,15 @@ namespace boost { namespace fusion
|
||||
template <typename Iterator>
|
||||
struct apply {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct value_of_impl<array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct value_of_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct value_of_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
|
Reference in New Issue
Block a user