// Copyright 2021, 2022 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #if defined(__GNUC__) && __GNUC__ == 8 # pragma GCC diagnostic ignored "-Wsign-conversion" #endif #include #include #include #include #include #if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) BOOST_PRAGMA_MESSAGE( "Test skipped, BOOST_NO_CXX11_HDR_UNORDERED_MAP is defined" ) int main() {} #elif defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 BOOST_PRAGMA_MESSAGE( "Test skipped, _CPPLIB_VER >= 520 and BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined" ) int main() {} #else #include template std::size_t hv( T const& x ) { return boost::hash()( x ); } template void test() { typedef std::unordered_map set; int const N = 256; set v; boost::detail::splitmix64 rng; for( int i = 0; i < N; ++i ) { BOOST_TEST_EQ( hv( v ), boost::hash_unordered_range( v.begin(), v.end() ) ); T x = static_cast( rng() ); v.insert( std::pair( x, x ) ); } } int main() { test(); test(); test(); test(); return boost::report_errors(); } #endif