Implement LWG2952: iterator_traits should work for pointers to cv T
llvm-svn: 318119
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: ffcfd923d712ea9d3b78d763bfe6c5e5f3c19090
diff --git a/include/iterator b/include/iterator
index 9e1da93..78cab25 100644
--- a/include/iterator
+++ b/include/iterator
@@ -37,16 +37,6 @@
typedef random_access_iterator_tag iterator_category;
};
-template<class T>
-struct iterator_traits<const T*>
-{
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef const T* pointer;
- typedef const T& reference;
- typedef random_access_iterator_tag iterator_category;
-};
-
template<class Category, class T, class Distance = ptrdiff_t,
class Pointer = T*, class Reference = T&>
struct iterator
@@ -494,7 +484,7 @@
struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*>
{
typedef ptrdiff_t difference_type;
- typedef typename remove_const<_Tp>::type value_type;
+ typedef typename remove_cv<_Tp>::type value_type;
typedef _Tp* pointer;
typedef _Tp& reference;
typedef random_access_iterator_tag iterator_category;