// Boost.Bimap // // Copyright (c) 2006-2007 Matias Capeletto // // 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) /// \file container_adaptor/set_adaptor.hpp /// \brief Container adaptor to easily build a std::set signature compatible container. #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_SET_ADAPTOR_HPP #define BOOST_BIMAP_CONTAINER_ADAPTOR_SET_ADAPTOR_HPP #if defined(_MSC_VER) #pragma once #endif #include #include #include #include namespace lslboost { namespace bimaps { namespace container_adaptor { /// \brief Container adaptor to easily build a std::set signature compatible container. template < class Base, class Iterator, class ConstIterator, class ReverseIterator, class ConstReverseIterator, class IteratorToBaseConverter = ::lslboost::mpl::na, class IteratorFromBaseConverter = ::lslboost::mpl::na, class ReverseIteratorFromBaseConverter = ::lslboost::mpl::na, class ValueToBaseConverter = ::lslboost::mpl::na, class ValueFromBaseConverter = ::lslboost::mpl::na, class KeyToBaseConverter = ::lslboost::mpl::na, class FunctorsFromDerivedClasses = mpl::vector<> > class set_adaptor : public ::lslboost::bimaps::container_adaptor:: ordered_associative_container_adaptor < Base, Iterator, ConstIterator, ReverseIterator, ConstReverseIterator, BOOST_DEDUCED_TYPENAME Iterator::value_type, IteratorToBaseConverter, IteratorFromBaseConverter, ReverseIteratorFromBaseConverter, ValueToBaseConverter, ValueFromBaseConverter, KeyToBaseConverter, FunctorsFromDerivedClasses > { typedef ::lslboost::bimaps::container_adaptor:: ordered_associative_container_adaptor < Base, Iterator, ConstIterator, ReverseIterator, ConstReverseIterator, BOOST_DEDUCED_TYPENAME Iterator::value_type, IteratorToBaseConverter, IteratorFromBaseConverter, ReverseIteratorFromBaseConverter, ValueToBaseConverter, ValueFromBaseConverter, KeyToBaseConverter, FunctorsFromDerivedClasses > base_; // Access ----------------------------------------------------------------- public: explicit set_adaptor(Base & c) : base_(c) {} protected: typedef set_adaptor set_adaptor_; }; } // namespace container_adaptor } // namespace bimaps } // namespace lslboost #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_SET_ADAPTOR_HPP