mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2025-02-24 22:00:34 +00:00
Corrected const-correctness on nullptr type_traits, and beefed up the test for nullptr_t.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@127338 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5885da34ce
commit
6e5e7e78ee
@ -211,6 +211,14 @@ template <> struct __is_void<void> : public true_type {};
|
||||
template <class _Tp> struct _LIBCPP_VISIBLE is_void
|
||||
: public __is_void<typename remove_cv<_Tp>::type> {};
|
||||
|
||||
// __is_nullptr_t
|
||||
|
||||
template <class _Tp> struct ____is_nullptr_t : public false_type {};
|
||||
template <> struct ____is_nullptr_t<nullptr_t> : public true_type {};
|
||||
|
||||
template <class _Tp> struct _LIBCPP_VISIBLE __is_nullptr_t
|
||||
: public ____is_nullptr_t<typename remove_cv<_Tp>::type> {};
|
||||
|
||||
// is_integral
|
||||
|
||||
template <class _Tp> struct __is_integral : public false_type {};
|
||||
@ -392,18 +400,17 @@ template <class _Tp> struct _LIBCPP_VISIBLE is_arithmetic
|
||||
// is_fundamental
|
||||
|
||||
template <class _Tp> struct _LIBCPP_VISIBLE is_fundamental
|
||||
: public integral_constant<bool, is_void<_Tp>::value ||
|
||||
: public integral_constant<bool, is_void<_Tp>::value ||
|
||||
__is_nullptr_t<_Tp>::value ||
|
||||
is_arithmetic<_Tp>::value> {};
|
||||
|
||||
template <> struct _LIBCPP_VISIBLE is_fundamental<nullptr_t>
|
||||
: public true_type {};
|
||||
|
||||
// is_scalar
|
||||
|
||||
template <class _Tp> struct _LIBCPP_VISIBLE is_scalar
|
||||
: public integral_constant<bool, is_arithmetic<_Tp>::value ||
|
||||
is_member_pointer<_Tp>::value ||
|
||||
is_pointer<_Tp>::value ||
|
||||
__is_nullptr_t<_Tp>::value ||
|
||||
is_enum<_Tp>::value > {};
|
||||
|
||||
template <> struct _LIBCPP_VISIBLE is_scalar<nullptr_t> : public true_type {};
|
||||
|
@ -41,4 +41,19 @@ int main()
|
||||
assert(!(nullptr != nullptr));
|
||||
assert(!(nullptr < nullptr));
|
||||
assert(!(nullptr > nullptr));
|
||||
A* a = nullptr;
|
||||
assert(a == nullptr);
|
||||
assert(a <= nullptr);
|
||||
assert(a >= nullptr);
|
||||
assert(!(a != nullptr));
|
||||
assert(!(a < nullptr));
|
||||
assert(!(a > nullptr));
|
||||
assert(nullptr == a);
|
||||
assert(nullptr <= a);
|
||||
assert(nullptr >= a);
|
||||
assert(!(nullptr != a));
|
||||
assert(!(nullptr < a));
|
||||
assert(!(nullptr > a));
|
||||
std::ptrdiff_t i = reinterpret_cast<std::ptrdiff_t>(nullptr);
|
||||
assert(i == 0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user