1 2 // Copyright 2006-2009 Daniel James. 3 // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 #if !defined(BOOST_UNORDERED_TEST_HELPERS_HEADER) 7 #define BOOST_UNORDERED_TEST_HELPERS_HEADER 8 9 namespace test 10 { 11 template <class Container> 12 struct get_key_impl 13 { 14 typedef BOOST_DEDUCED_TYPENAME Container::key_type key_type; 15 get_keytest::get_key_impl16 static key_type const& get_key(key_type const& x) 17 { 18 return x; 19 } 20 21 template <class T> get_keytest::get_key_impl22 static key_type const& get_key( 23 std::pair<key_type, T> const& x, char = 0) 24 { 25 return x.first; 26 } 27 28 template <class T> get_keytest::get_key_impl29 static key_type const& get_key(std::pair<key_type const, T> const& x, 30 unsigned char = 0) 31 { 32 return x.first; 33 } 34 }; 35 36 template <class Container, class T> get_key(T const & x)37 inline BOOST_DEDUCED_TYPENAME Container::key_type const& get_key(T const& x) 38 { 39 return get_key_impl<Container>::get_key(x); 40 } 41 } 42 43 #endif 44