1 /* Copyright 2003-2015 Joaquin M Lopez Munoz. 2 * Distributed under the Boost Software License, Version 1.0. 3 * (See accompanying file LICENSE_1_0.txt or copy at 4 * http://www.boost.org/LICENSE_1_0.txt) 5 * 6 * See http://www.boost.org/libs/multi_index for library home page. 7 */ 8 9 #ifndef BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP 10 #define BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP 11 12 #if defined(_MSC_VER) 13 #pragma once 14 #endif 15 16 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ 17 #include <boost/call_traits.hpp> 18 19 namespace boost{ 20 21 namespace multi_index{ 22 23 namespace detail{ 24 25 template<typename Value,typename KeyFromValue,typename Compare> 26 struct value_comparison 27 { 28 typedef Value first_argument_type; 29 typedef Value second_argument_type; 30 typedef bool result_type; 31 value_comparisonboost::multi_index::detail::value_comparison32 value_comparison( 33 const KeyFromValue& key_=KeyFromValue(),const Compare& comp_=Compare()): 34 key(key_),comp(comp_) 35 { 36 } 37 operator ()boost::multi_index::detail::value_comparison38 bool operator()( 39 typename call_traits<Value>::param_type x, 40 typename call_traits<Value>::param_type y)const 41 { 42 return comp(key(x),key(y)); 43 } 44 45 private: 46 KeyFromValue key; 47 Compare comp; 48 }; 49 50 } /* namespace multi_index::detail */ 51 52 } /* namespace multi_index */ 53 54 } /* namespace boost */ 55 56 #endif 57