Patches from Nathan Ridge using SFINAE to disable the Fusion algorithms for non-{Fusion sequence} types

[SVN r78463]
This commit is contained in:
Joel de Guzman
2012-05-14 00:37:21 +00:00
parent 66e8a6d3b7
commit b63c8214d7
15 changed files with 174 additions and 24 deletions

View File

@ -11,8 +11,11 @@
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
#include <boost/fusion/sequence/comparison/detail/equal_to.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/config.hpp>
#include <boost/static_assert.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/ice.hpp>
#if defined (BOOST_MSVC)
# pragma warning(push)
@ -54,7 +57,15 @@ namespace boost { namespace fusion
}
template <typename Seq1, typename Seq2>
inline void
inline
typename
enable_if_c<
type_traits::ice_and<
traits::is_sequence<Seq1>::value
, traits::is_sequence<Seq2>::value
>::value,
void
>::type
copy(Seq1 const& src, Seq2& dest)
{
BOOST_STATIC_ASSERT(