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 9 /// \file container_adaptor/unordered_set_adaptor.hpp 10 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container. 11 12 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP 13 #define BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP 14 15 #if defined(_MSC_VER) 16 #pragma once 17 #endif 18 19 #include <boost/config.hpp> 20 21 #include <boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp> 22 #include <boost/mpl/aux_/na.hpp> 23 #include <boost/mpl/vector.hpp> 24 25 namespace boost { 26 namespace bimaps { 27 namespace container_adaptor { 28 29 /// \brief Container adaptor to easily build a std::unordered_set signature compatible container. 30 31 template 32 < 33 class Base, 34 35 class Iterator, 36 class ConstIterator, 37 class LocalIterator, 38 class ConstLocalIterator, 39 40 class IteratorToBaseConverter = ::boost::mpl::na, 41 class IteratorFromBaseConverter = ::boost::mpl::na, 42 class LocalIteratorFromBaseConverter = ::boost::mpl::na, 43 class ValueToBaseConverter = ::boost::mpl::na, 44 class ValueFromBaseConverter = ::boost::mpl::na, 45 class KeyToBaseConverter = ::boost::mpl::na, 46 47 class FunctorsFromDerivedClasses = mpl::vector<> 48 > 49 class unordered_set_adaptor : 50 51 public ::boost::bimaps::container_adaptor:: 52 unordered_associative_container_adaptor 53 < 54 Base, 55 Iterator, ConstIterator, LocalIterator, ConstLocalIterator, 56 BOOST_DEDUCED_TYPENAME Iterator::value_type, 57 IteratorToBaseConverter, IteratorFromBaseConverter, 58 LocalIteratorFromBaseConverter, 59 ValueToBaseConverter, ValueFromBaseConverter, 60 KeyToBaseConverter, 61 FunctorsFromDerivedClasses 62 > 63 { 64 typedef ::boost::bimaps::container_adaptor:: 65 unordered_associative_container_adaptor 66 < 67 Base, 68 Iterator, ConstIterator, LocalIterator, ConstLocalIterator, 69 BOOST_DEDUCED_TYPENAME Iterator::value_type, 70 IteratorToBaseConverter, IteratorFromBaseConverter, 71 LocalIteratorFromBaseConverter, 72 ValueToBaseConverter, ValueFromBaseConverter, 73 KeyToBaseConverter, 74 FunctorsFromDerivedClasses 75 76 > base_; 77 78 // Access ----------------------------------------------------------------- 79 80 public: 81 unordered_set_adaptor(Base & c)82 explicit unordered_set_adaptor(Base & c) : 83 base_(c) {} 84 85 protected: 86 87 typedef unordered_set_adaptor unordered_set_adaptor_; 88 89 }; 90 91 92 } // namespace container_adaptor 93 } // namespace bimaps 94 } // namespace boost 95 96 97 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_UNORDERED_SET_ADAPTOR_HPP 98 99