forked from OSchip/llvm-project
Can't test for noexcept on C++03; std::hash<nullptr_t> isn't available until C++17
llvm-svn: 298580
This commit is contained in:
parent
490889c405
commit
d832316853
|
@ -470,6 +470,7 @@ template <> struct hash<double>;
|
|||
template <> struct hash<long double>;
|
||||
|
||||
template<class T> struct hash<T*>;
|
||||
template <> struct hash<nullptr_t>; // C++17
|
||||
|
||||
} // std
|
||||
|
||||
|
|
|
@ -41,13 +41,16 @@ 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()
|
||||
|
|
|
@ -150,11 +150,16 @@
|
|||
#define TEST_NORETURN [[noreturn]]
|
||||
#endif
|
||||
|
||||
#if TEST_STD_VER < 11
|
||||
#define ASSERT_NOEXCEPT(...)
|
||||
#define ASSERT_NOT_NOEXCEPT(...)
|
||||
#else
|
||||
#define ASSERT_NOEXCEPT(...) \
|
||||
static_assert(noexcept(__VA_ARGS__), "Operation must be noexcept")
|
||||
|
||||
#define ASSERT_NOT_NOEXCEPT(...) \
|
||||
static_assert(!noexcept(__VA_ARGS__), "Operation must NOT be noexcept")
|
||||
#endif
|
||||
|
||||
/* Macros for testing libc++ specific behavior and extensions */
|
||||
#if defined(_LIBCPP_VERSION)
|
||||
|
|
Loading…
Reference in New Issue