Fix call to intrinsic is_convertible with incomplete types in MSVC 14.1

This commit is contained in:
Ion Gaztañaga
2017-06-08 21:51:53 +02:00
parent db14782f0f
commit ac718c54ed

View File

@@ -114,11 +114,11 @@ struct iterator_disable_if_tag
template<class I, class Tag, class Tag2, class R = void> template<class I, class Tag, class Tag2, class R = void>
struct iterator_enable_if_convertible_tag struct iterator_enable_if_convertible_tag
: ::boost::move_detail::enable_if_c : ::boost::move_detail::enable_if_c
< ::boost::move_detail::is_convertible < ::boost::move_detail::is_same_or_convertible
< typename boost::intrusive::iterator_traits<I>::iterator_category < typename boost::intrusive::iterator_traits<I>::iterator_category
, Tag , Tag
>::value && >::value &&
!::boost::move_detail::is_convertible !::boost::move_detail::is_same_or_convertible
< typename boost::intrusive::iterator_traits<I>::iterator_category < typename boost::intrusive::iterator_traits<I>::iterator_category
, Tag2 , Tag2
>::value >::value
@@ -177,7 +177,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_tag<InputIt, std::random
template<class InputIt, class Distance> template<class InputIt, class Distance>
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
<InputIt, boost::iterators::incrementable_traversal_tag, boost::iterators::single_pass_traversal_tag>::type <InputIt, const boost::iterators::incrementable_traversal_tag&, const boost::iterators::single_pass_traversal_tag&>::type
iterator_advance(InputIt& it, Distance n) iterator_advance(InputIt& it, Distance n)
{ {
while(n--) while(n--)
@@ -186,7 +186,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
template<class InputIt, class Distance> template<class InputIt, class Distance>
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
<InputIt, boost::iterators::single_pass_traversal_tag, boost::iterators::forward_traversal_tag>::type <InputIt, const boost::iterators::single_pass_traversal_tag &, const boost::iterators::forward_traversal_tag&>::type
iterator_advance(InputIt& it, Distance n) iterator_advance(InputIt& it, Distance n)
{ {
while(n--) while(n--)
@@ -195,7 +195,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
template<class InputIt, class Distance> template<class InputIt, class Distance>
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
<InputIt, boost::iterators::forward_traversal_tag, boost::iterators::bidirectional_traversal_tag>::type <InputIt, const boost::iterators::forward_traversal_tag&, const boost::iterators::bidirectional_traversal_tag&>::type
iterator_advance(InputIt& it, Distance n) iterator_advance(InputIt& it, Distance n)
{ {
while(n--) while(n--)
@@ -204,7 +204,7 @@ BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
template<class InputIt, class Distance> template<class InputIt, class Distance>
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
<InputIt, boost::iterators::bidirectional_traversal_tag, boost::iterators::random_access_traversal_tag>::type <InputIt, const boost::iterators::bidirectional_traversal_tag&, const boost::iterators::random_access_traversal_tag&>::type
iterator_advance(InputIt& it, Distance n) iterator_advance(InputIt& it, Distance n)
{ {
for (; 0 < n; --n) for (; 0 < n; --n)
@@ -217,7 +217,7 @@ class fake{};
template<class InputIt, class Distance> template<class InputIt, class Distance>
BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag BOOST_INTRUSIVE_FORCEINLINE typename iterator_enable_if_convertible_tag
<InputIt, boost::iterators::random_access_traversal_tag, fake>::type <InputIt, const boost::iterators::random_access_traversal_tag&, const fake&>::type
iterator_advance(InputIt& it, Distance n) iterator_advance(InputIt& it, Distance n)
{ {
it += n; it += n;