ODR safe code

[SVN r35275]
This commit is contained in:
Joel de Guzman
2006-09-22 13:39:27 +00:00
parent da23c8a4cc
commit a37b435ce6
22 changed files with 269 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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