dc96d371fa
This change excludes boost:: and boost::detail:: namespaces from ADL for unqualified function calls (e.g. algorithms). This reduces the possibility of name clashes with other libraries and user's code. One of the effects should be fixing test failures on gcc 4.2 and 4.4 due to clashed with Boost.TypeTraits. Also some of the functions marked with inline keyword.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
// (C) Copyright David Abrahams 2002.
|
|
// (C) Copyright Jeremy Siek 2002.
|
|
// (C) Copyright Thomas Witt 2002.
|
|
// Distributed under the Boost Software License, Version 1.0. (See
|
|
// accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
#ifndef BOOST_INTEROPERABLE_23022003THW_HPP
|
|
# define BOOST_INTEROPERABLE_23022003THW_HPP
|
|
|
|
# include <boost/mpl/bool.hpp>
|
|
# include <boost/mpl/or.hpp>
|
|
|
|
# include <boost/type_traits/is_convertible.hpp>
|
|
|
|
# include <boost/iterator/detail/config_def.hpp> // must appear last
|
|
|
|
namespace boost {
|
|
namespace iterators {
|
|
|
|
//
|
|
// Meta function that determines whether two
|
|
// iterator types are considered interoperable.
|
|
//
|
|
// Two iterator types A,B are considered interoperable if either
|
|
// A is convertible to B or vice versa.
|
|
// This interoperability definition is in sync with the
|
|
// standards requirements on constant/mutable container
|
|
// iterators (23.1 [lib.container.requirements]).
|
|
//
|
|
// For compilers that don't support is_convertible
|
|
// is_interoperable gives false positives. See comments
|
|
// on operator implementation for consequences.
|
|
//
|
|
template <typename A, typename B>
|
|
struct is_interoperable
|
|
# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
|
|
: mpl::true_
|
|
# else
|
|
: mpl::or_<
|
|
is_convertible< A, B >
|
|
, is_convertible< B, A > >
|
|
# endif
|
|
{
|
|
};
|
|
|
|
} // namespace iterators
|
|
|
|
using iterators::is_interoperable;
|
|
|
|
} // namespace boost
|
|
|
|
# include <boost/iterator/detail/config_undef.hpp>
|
|
|
|
#endif // BOOST_INTEROPERABLE_23022003THW_HPP
|