![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/include/boost/bimap/container_adaptor/detail/ |
Upload File : |
// 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/detail/identity_converters.hpp /// \brief Value and iterators identity converters. #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP #define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP #if defined(_MSC_VER) #pragma once #endif #include <boost/config.hpp> namespace boost { namespace bimaps { namespace container_adaptor { /// \brief Details of the container adaptor toolbox namespace detail { /// \brief Iterator identity converter used by default in container adaptors. /** If Iterator and ConstIterator are of the same type one of the convert function is not included. **/ template < class BaseIterator , class Iterator, class BaseConstIterator , class ConstIterator > struct iterator_to_base_identity { BaseIterator operator()(Iterator iter) const { return BaseIterator(iter); } BaseConstIterator operator()(ConstIterator iter) const { return BaseConstIterator(iter); } }; #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES template< class BaseIterator, class Iterator > struct iterator_to_base_identity<BaseIterator,Iterator,BaseIterator,Iterator> { BaseIterator operator()(Iterator iter) const { return BaseIterator(iter); } }; #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES /// \brief Iterator from base identity converter used by default in container adaptors. /** If Iterator and ConstIterator are of the same type one of the convert function is not included. **/ template < class BaseIterator , class Iterator, class BaseConstIterator , class ConstIterator > struct iterator_from_base_identity { Iterator operator()(BaseIterator iter) const { return Iterator(iter); } ConstIterator operator()(BaseConstIterator iter) const { return ConstIterator(iter); } }; #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES template< class BaseIterator, class Iterator, class ConstIterator > struct iterator_from_base_identity<BaseIterator,Iterator,BaseIterator,ConstIterator> { Iterator operator()(BaseIterator iter) const { return Iterator(iter); } }; #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES /// \brief Value to base identity converter used by default in container adaptors. template< class BaseValue, class Value > struct value_to_base_identity { BaseValue operator()(const Value & val) const { return BaseValue(val); } }; #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES template< class Value > struct value_to_base_identity< Value, Value > { const Value & operator()(const Value & val) const { return val; } }; #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES /// \brief Value from base identity converter used by default in container adaptors. template< class BaseValue, class Value > struct value_from_base_identity { Value operator()(const BaseValue & val) const { return Value(val); } }; #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES template< class Value > struct value_from_base_identity<Value,Value> { Value & operator()(Value & val) const { return val; } const Value & operator()(const Value & val) const { return val; } }; #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES /// \brief Key to base identity converter used by default in container adaptors. template< class BaseKey, class Key > struct key_to_base_identity { BaseKey operator()(const Key & k) const { return BaseKey(k); } }; #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES template< class Key > struct key_to_base_identity< Key, Key > { // As default accept any type as key in order to allow container // adaptors to work with compatible key types template< class CompatibleKey > const CompatibleKey & operator()(const CompatibleKey & k) const { return k; } }; #endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES } // namespace detail } // namespace container_adaptor } // namespace bimaps } // namespace boost #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_IDENTITY_CONVERTERS_HPP