![]() 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/comparison_adaptor.hpp /// \brief Comparison adaptor. #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_COMPARISON_ADAPTOR_HPP #define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_COMPARISON_ADAPTOR_HPP #if defined(_MSC_VER) #pragma once #endif #include <boost/config.hpp> #include <boost/call_traits.hpp> namespace boost { namespace bimaps { namespace container_adaptor { namespace detail { /// \brief Comparison adaptor /** A simple comparison adaptor. **/ template < class Compare, class NewType, class Converter > struct comparison_adaptor { typedef NewType first_argument_type; typedef NewType second_argument_type; typedef bool result_type; comparison_adaptor( const Compare & comp, const Converter & conv) : compare(comp), converter(conv) {} bool operator()( BOOST_DEDUCED_TYPENAME call_traits<NewType>::param_type x, BOOST_DEDUCED_TYPENAME call_traits<NewType>::param_type y) const { return compare( converter(x), converter(y) ); } private: Compare compare; Converter converter; }; template < class Compare, class NewType, class Converter > struct compatible_comparison_adaptor { typedef NewType first_argument_type; typedef NewType second_argument_type; typedef bool result_type; compatible_comparison_adaptor( const Compare & comp, const Converter & conv) : compare(comp), converter(conv) {} template< class CompatibleTypeLeft, class CompatibleTypeRight > bool operator()( const CompatibleTypeLeft & x, const CompatibleTypeRight & y) const { return compare( converter(x), converter(y) ); } private: Compare compare; Converter converter; }; /// \brief Unary Check adaptor /** A simple unary check adaptor. **/ template < class Compare, class NewType, class Converter > struct unary_check_adaptor { typedef BOOST_DEDUCED_TYPENAME call_traits<NewType>::param_type argument_type; typedef bool result_type; unary_check_adaptor( const Compare & comp, const Converter & conv ) : compare(comp), converter(conv) {} bool operator()( BOOST_DEDUCED_TYPENAME call_traits<NewType>::param_type x) const { return compare( converter(x) ); } private: Compare compare; Converter converter; }; } // namespace detail } // namespace container_adaptor } // namespace bimaps } // namespace boost #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_COMPARISON_ADAPTOR_HPP