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,7 +19,7 @@ namespace boost { namespace fusion
namespace traits
{
template<typename Sequence>
template <typename Sequence>
struct tag_of<Sequence, typename boost::enable_if<detail::is_mpl_sequence<Sequence> >::type>
{
typedef mpl_sequence_tag type;

View File

@ -15,6 +15,10 @@
namespace boost { namespace fusion
{
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
template <typename Tag>
@ -23,6 +27,15 @@ namespace boost { namespace fusion
template <typename Sequence, typename N>
struct apply;
};
template <>
struct at_impl<array_tag>;
template <>
struct at_impl<mpl_sequence_tag>;
template <>
struct at_impl<std_pair_tag>;
}
namespace result_of

View File

@ -15,6 +15,10 @@
namespace boost { namespace fusion
{
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
template <typename Tag>
@ -23,6 +27,15 @@ namespace boost { namespace fusion
template <typename Sequence, typename Key>
struct apply;
};
template <>
struct at_key_impl<array_tag>;
template <>
struct at_key_impl<mpl_sequence_tag>;
template <>
struct at_key_impl<std_pair_tag>;
}
namespace result_of

View File

@ -13,6 +13,9 @@
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
@ -22,6 +25,15 @@ namespace boost { namespace fusion
template <typename Sequence>
struct apply;
};
template <>
struct begin_impl<array_tag>;
template <>
struct begin_impl<mpl_sequence_tag>;
template <>
struct begin_impl<std_pair_tag>;
}
namespace result_of

View File

@ -15,6 +15,7 @@
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
struct mpl_sequence_tag; // mpl sequence tag
namespace extension
{
@ -26,6 +27,9 @@ namespace boost { namespace fusion
: mpl::bool_<(result_of::size<Sequence>::value == 0)>
{};
};
template <>
struct empty_impl<mpl_sequence_tag>;
}
namespace result_of

View File

@ -13,6 +13,9 @@
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
@ -22,6 +25,15 @@ namespace boost { namespace fusion
template <typename Sequence>
struct apply;
};
template <>
struct end_impl<array_tag>;
template <>
struct end_impl<mpl_sequence_tag>;
template <>
struct end_impl<std_pair_tag>;
}
namespace result_of

View File

@ -16,6 +16,9 @@ namespace boost { namespace fusion
{
struct void_;
struct fusion_sequence_tag;
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
@ -28,6 +31,15 @@ namespace boost { namespace fusion
template meta_at_impl<Key>::type, void_> >
{};
};
template <>
struct has_key_impl<array_tag>;
template <>
struct has_key_impl<mpl_sequence_tag>;
template <>
struct has_key_impl<std_pair_tag>;
}
namespace result_of

View File

@ -23,6 +23,15 @@ namespace boost { namespace fusion
template <typename Sequence>
struct apply : Sequence::size {};
};
template <>
struct size_impl<array_tag>;
template <>
struct size_impl<mpl_sequence_tag>;
template <>
struct size_impl<std_pair_tag>;
}
namespace result_of

View File

@ -13,6 +13,10 @@
namespace boost { namespace fusion
{
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
template <typename Tag>
@ -21,6 +25,15 @@ namespace boost { namespace fusion
template <typename Sequence, typename N>
struct apply;
};
template <>
struct value_at_impl<array_tag>;
template <>
struct value_at_impl<mpl_sequence_tag>;
template <>
struct value_at_impl<std_pair_tag>;
}
namespace result_of

View File

@ -14,6 +14,10 @@
namespace boost { namespace fusion
{
struct array_tag; // boost::array tag
struct mpl_sequence_tag; // mpl sequence tag
struct std_pair_tag; // std::pair tag
namespace extension
{
template <typename Tag>
@ -22,6 +26,15 @@ namespace boost { namespace fusion
template <typename Sequence, typename N>
struct apply;
};
template <>
struct value_at_key_impl<array_tag>;
template <>
struct value_at_key_impl<mpl_sequence_tag>;
template <>
struct value_at_key_impl<std_pair_tag>;
}
namespace result_of