iterator_facade_converters.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Boost.Bimap
  2. //
  3. // Copyright (c) 2006-2007 Matias Capeletto
  4. //
  5. // Distributed under the Boost Software License, Version 1.0.
  6. // (See accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt)
  8. /// \file container_adaptor/support/iterator_facade_converters.hpp
  9. /// \brief Converter for Boost.Iterators based iterators.
  10. #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_ITERATOR_FACADE_CONVERTERS_HPP
  11. #define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_ITERATOR_FACADE_CONVERTERS_HPP
  12. #if defined(_MSC_VER)
  13. #pragma once
  14. #endif
  15. #include <boost/config.hpp>
  16. namespace boost {
  17. namespace bimaps {
  18. namespace container_adaptor {
  19. /// \brief Utilities to help in the construction of a container adaptor
  20. namespace support {
  21. /// \brief Converter for Boost.Iterators based iterators.
  22. /**
  23. Container adaptor is dessigned to play well with Boost.Iterators. This
  24. converter can be used if this library is used to adapt the iterators.
  25. **/
  26. template
  27. <
  28. class Iterator,
  29. class ConstIterator
  30. >
  31. struct iterator_facade_to_base
  32. {
  33. BOOST_DEDUCED_TYPENAME Iterator::base_type operator()(Iterator iter) const
  34. {
  35. return iter.base();
  36. }
  37. BOOST_DEDUCED_TYPENAME ConstIterator::base_type operator()(ConstIterator iter) const
  38. {
  39. return iter.base();
  40. }
  41. };
  42. #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES
  43. template
  44. <
  45. class Iterator
  46. >
  47. struct iterator_facade_to_base<Iterator,Iterator>
  48. {
  49. BOOST_DEDUCED_TYPENAME Iterator::base_type operator()(Iterator iter) const
  50. {
  51. return iter.base();
  52. }
  53. };
  54. #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES
  55. #undef BOOST_BIMAP_CONTAINER_ADAPTOR_IMPLEMENT_CONVERT_FACADE_FUNCTION
  56. } // namespace support
  57. } // namespace container_adaptor
  58. } // namespace bimaps
  59. } // namespace boost
  60. #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_ITERATOR_FACADE_CONVERTERS_HPP