Allow incomplete types in fusion::tag_of and fusion::is_native_fusion_sequence

This commit is contained in:
Louis Dionne
2018-02-28 20:03:07 -08:00
parent f61bffb21f
commit 82f677c169
5 changed files with 45 additions and 3 deletions

View File

@ -10,9 +10,11 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/support/sequence_base.hpp>
#include <boost/fusion/support/tag_of.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/is_sequence.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/type_traits/is_complete.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/type_traits/is_same.hpp>
@ -69,7 +71,10 @@ namespace boost { namespace fusion
template <typename Sequence, typename Enable = void>
struct is_native_fusion_sequence
: is_convertible<Sequence, fusion::detail::from_sequence_convertible_type>
: mpl::and_<
is_complete<Sequence>,
is_convertible<Sequence, fusion::detail::from_sequence_convertible_type>
>
{};
}
}}