mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-23 09:27:15 +02:00
Borland workarounds
[SVN r21893]
This commit is contained in:
@ -122,4 +122,16 @@
|
|||||||
# define BOOST_ARG_DEPENDENT_TYPENAME
|
# define BOOST_ARG_DEPENDENT_TYPENAME
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
// no include guard multiple inclusion intended
|
# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95)) \
|
||||||
|
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
||||||
|
|
||||||
|
// GCC-2.95 eagerly instantiates templated constructors and conversion
|
||||||
|
// operators in convertibility checks, causing premature errors.
|
||||||
|
//
|
||||||
|
// Borland's problems are harder to diagnose due to lack of an
|
||||||
|
// instantiation stack backtrace. They may be due in part to the fact
|
||||||
|
// that it drops cv-qualification willy-nilly in templates.
|
||||||
|
# define BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// no include guard; multiple inclusion intended
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
|
#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
|
||||||
#undef BOOST_ARG_DEPENDENT_TYPENAME
|
#undef BOOST_ARG_DEPENDENT_TYPENAME
|
||||||
#undef BOOST_NO_LVALUE_RETURN_DETECTION
|
#undef BOOST_NO_LVALUE_RETURN_DETECTION
|
||||||
|
#undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
||||||
|
|
||||||
#ifdef BOOST_ITERATOR_CONFIG_DEF
|
#ifdef BOOST_ITERATOR_CONFIG_DEF
|
||||||
# undef BOOST_ITERATOR_CONFIG_DEF
|
# undef BOOST_ITERATOR_CONFIG_DEF
|
||||||
|
@ -228,7 +228,7 @@ namespace boost
|
|||||||
template <class I1, class I2>
|
template <class I1, class I2>
|
||||||
struct apply
|
struct apply
|
||||||
:
|
:
|
||||||
# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95))
|
# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
||||||
iterator_difference<I1>
|
iterator_difference<I1>
|
||||||
# elif BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# elif BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
||||||
mpl::if_<
|
mpl::if_<
|
||||||
@ -575,9 +575,7 @@ namespace boost
|
|||||||
// ----------------
|
// ----------------
|
||||||
//
|
//
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95))
|
# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
||||||
// GCC-2.95 eagerly instantiates templated constructors and conversion
|
|
||||||
// operators in convertibility checks, causing premature errors.
|
|
||||||
# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_()
|
# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_()
|
||||||
# else
|
# else
|
||||||
# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
|
# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
|
||||||
|
Reference in New Issue
Block a user