Turning on cxx_nullptr exposed a latent bug in is_function, causing nullptr to wrongly classify as a function. Fixed.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@132406 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
083ba5f5ca
commit
d737382dfd
@ -328,6 +328,11 @@ template <class _Tp> struct _LIBCPP_VISIBLE is_class
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// is_same
|
||||||
|
|
||||||
|
template <class _Tp, class _Up> struct _LIBCPP_VISIBLE is_same : public false_type {};
|
||||||
|
template <class _Tp> struct _LIBCPP_VISIBLE is_same<_Tp, _Tp> : public true_type {};
|
||||||
|
|
||||||
// is_function
|
// is_function
|
||||||
|
|
||||||
namespace __is_function_imp
|
namespace __is_function_imp
|
||||||
@ -340,7 +345,8 @@ template <class _Tp> _Tp& __source();
|
|||||||
template <class _Tp, bool = is_class<_Tp>::value ||
|
template <class _Tp, bool = is_class<_Tp>::value ||
|
||||||
is_union<_Tp>::value ||
|
is_union<_Tp>::value ||
|
||||||
is_void<_Tp>::value ||
|
is_void<_Tp>::value ||
|
||||||
is_reference<_Tp>::value>
|
is_reference<_Tp>::value ||
|
||||||
|
is_same<_Tp, nullptr_t>::value >
|
||||||
struct __is_function
|
struct __is_function
|
||||||
: public integral_constant<bool, sizeof(__is_function_imp::__test<_Tp>(__is_function_imp::__source<_Tp>())) == 1>
|
: public integral_constant<bool, sizeof(__is_function_imp::__test<_Tp>(__is_function_imp::__source<_Tp>())) == 1>
|
||||||
{};
|
{};
|
||||||
@ -591,11 +597,6 @@ template <class _Tp> struct _LIBCPP_VISIBLE remove_all_extents<_Tp[]>
|
|||||||
template <class _Tp, size_t _Np> struct _LIBCPP_VISIBLE remove_all_extents<_Tp[_Np]>
|
template <class _Tp, size_t _Np> struct _LIBCPP_VISIBLE remove_all_extents<_Tp[_Np]>
|
||||||
{typedef typename remove_all_extents<_Tp>::type type;};
|
{typedef typename remove_all_extents<_Tp>::type type;};
|
||||||
|
|
||||||
// is_same
|
|
||||||
|
|
||||||
template <class _Tp, class _Up> struct _LIBCPP_VISIBLE is_same : public false_type {};
|
|
||||||
template <class _Tp> struct _LIBCPP_VISIBLE is_same<_Tp, _Tp> : public true_type {};
|
|
||||||
|
|
||||||
// is_abstract
|
// is_abstract
|
||||||
|
|
||||||
namespace __is_abstract_imp
|
namespace __is_abstract_imp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user