Revert "Revert "Merge to upstream r304942.""

This reverts commit 38a0d5af7e.

Test: make checkbuild
Test: ./run_tests.py
Test: ./run_tests.py --bitness 64
This commit is contained in:
Dan Albert
2018-01-17 14:21:02 -08:00
parent 38a0d5af7e
commit c79549b70e
1102 changed files with 19092 additions and 14798 deletions

View File

@@ -36,6 +36,7 @@ test()
typedef std::hash<T> H;
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
ASSERT_NOEXCEPT(H()(T()));
typedef typename std::underlying_type<T>::type under_type;
H h1;

View File

@@ -24,6 +24,8 @@
#include <limits>
#include <cmath>
#include "test_macros.h"
template <class T>
void
test()
@@ -31,6 +33,7 @@ test()
typedef std::hash<T> H;
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
ASSERT_NOEXCEPT(H()(T()));
H h;
std::size_t t0 = h(0.);

View File

@@ -31,6 +31,7 @@ test()
typedef std::hash<T> H;
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
ASSERT_NOEXCEPT(H()(T()));
H h;
for (int i = 0; i <= 5; ++i)
@@ -64,42 +65,42 @@ int main()
test<long long>();
test<unsigned long long>();
// LWG #2119
// LWG #2119
test<std::ptrdiff_t>();
test<size_t>();
test<int8_t>();
test<int16_t>();
test<int32_t>();
test<int64_t>();
test<int8_t>();
test<int16_t>();
test<int32_t>();
test<int64_t>();
test<int_fast8_t>();
test<int_fast16_t>();
test<int_fast32_t>();
test<int_fast64_t>();
test<int_fast8_t>();
test<int_fast16_t>();
test<int_fast32_t>();
test<int_fast64_t>();
test<int_least8_t>();
test<int_least16_t>();
test<int_least32_t>();
test<int_least64_t>();
test<int_least8_t>();
test<int_least16_t>();
test<int_least32_t>();
test<int_least64_t>();
test<intmax_t>();
test<intptr_t>();
test<uint8_t>();
test<uint16_t>();
test<uint32_t>();
test<uint64_t>();
test<uint8_t>();
test<uint16_t>();
test<uint32_t>();
test<uint64_t>();
test<uint_fast8_t>();
test<uint_fast16_t>();
test<uint_fast32_t>();
test<uint_fast64_t>();
test<uint_fast8_t>();
test<uint_fast16_t>();
test<uint_fast32_t>();
test<uint_fast64_t>();
test<uint_least8_t>();
test<uint_least16_t>();
test<uint_least32_t>();
test<uint_least64_t>();
test<uint_least8_t>();
test<uint_least16_t>();
test<uint_least32_t>();
test<uint_least64_t>();
test<uintmax_t>();
test<uintptr_t>();

View File

@@ -23,6 +23,8 @@
#include <type_traits>
#include <limits>
#include "test_macros.h"
template <class T>
void
test()
@@ -30,6 +32,7 @@ test()
typedef std::hash<T> H;
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
ASSERT_NOEXCEPT(H()(T()));
H h;
typedef typename std::remove_pointer<T>::type type;
@@ -38,7 +41,20 @@ test()
assert(h(&i) != h(&j));
}
// can't hash nullptr_t until c++17
void test_nullptr()
{
#if TEST_STD_VER > 14
typedef std::nullptr_t T;
typedef std::hash<T> H;
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
ASSERT_NOEXCEPT(H()(T()));
#endif
}
int main()
{
test<int*>();
test_nullptr();
}