![]() |
|
|||
File indexing completed on 2025-09-19 08:32:13
0001 // (C) Copyright David Abrahams 2002. 0002 // (C) Copyright Jeremy Siek 2002. 0003 // (C) Copyright Thomas Witt 2002. 0004 // Distributed under the Boost Software License, Version 1.0. (See 0005 // accompanying file LICENSE_1_0.txt or copy at 0006 // http://www.boost.org/LICENSE_1_0.txt) 0007 #ifndef BOOST_INTEROPERABLE_23022003THW_HPP 0008 #define BOOST_INTEROPERABLE_23022003THW_HPP 0009 0010 #include <type_traits> 0011 #include <boost/iterator/detail/type_traits/disjunction.hpp> 0012 0013 namespace boost { 0014 namespace iterators { 0015 0016 // 0017 // Meta function that determines whether two 0018 // iterator types are considered interoperable. 0019 // 0020 // Two iterator types A,B are considered interoperable if either 0021 // A is convertible to B or vice versa. 0022 // This interoperability definition is in sync with the 0023 // standards requirements on constant/mutable container 0024 // iterators (23.1 [lib.container.requirements]). 0025 // 0026 // For compilers that don't support is_convertible 0027 // is_interoperable gives false positives. See comments 0028 // on operator implementation for consequences. 0029 // 0030 template< typename A, typename B > 0031 struct is_interoperable : 0032 public detail::disjunction< std::is_convertible< A, B >, std::is_convertible< B, A > > 0033 { 0034 }; 0035 0036 } // namespace iterators 0037 0038 using iterators::is_interoperable; 0039 0040 } // namespace boost 0041 0042 #endif // BOOST_INTEROPERABLE_23022003THW_HPP
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |