summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-06-30 04:40:50 +0000
committerEric Fiselier <eric@efcs.ca>2016-06-30 04:40:50 +0000
commit8892b4eef075711944520e3f24df2464125591ed (patch)
tree6f70c8ac514dcb449efd211685136970ed86591b
parentbc56e3ba533f48b440c6a079f012665d9b813d2f (diff)
downloadbcm5719-llvm-8892b4eef075711944520e3f24df2464125591ed.tar.gz
bcm5719-llvm-8892b4eef075711944520e3f24df2464125591ed.zip
Fix ::reference typedef in insert iterators.
Since at least the C++11 standard insert iterators are specified as having ::reference typedef void. Libc++ was not doing that. This patch corrects the typedef. This patch changes the std::iterator base class of insert_iterator, front_insert_iterator and back_insert_iterator. This should not be an ABI breaking change. llvm-svn: 274209
-rw-r--r--libcxx/include/iterator12
-rw-r--r--libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp4
-rw-r--r--libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp4
-rw-r--r--libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp4
4 files changed, 12 insertions, 12 deletions
diff --git a/libcxx/include/iterator b/libcxx/include/iterator
index 9314d6ace26..c83320053ee 100644
--- a/libcxx/include/iterator
+++ b/libcxx/include/iterator
@@ -149,7 +149,7 @@ public:
typedef Container container_type;
typedef void value_type;
typedef void difference_type;
- typedef back_insert_iterator<Cont>& reference;
+ typedef void reference;
typedef void pointer;
explicit back_insert_iterator(Container& x);
@@ -170,7 +170,7 @@ public:
typedef Container container_type;
typedef void value_type;
typedef void difference_type;
- typedef front_insert_iterator<Cont>& reference;
+ typedef void reference;
typedef void pointer;
explicit front_insert_iterator(Container& x);
@@ -192,7 +192,7 @@ public:
typedef Container container_type;
typedef void value_type;
typedef void difference_type;
- typedef insert_iterator<Cont>& reference;
+ typedef void reference;
typedef void pointer;
insert_iterator(Container& x, typename Container::iterator i);
@@ -663,7 +663,7 @@ class _LIBCPP_TYPE_VIS_ONLY back_insert_iterator
void,
void,
void,
- back_insert_iterator<_Container>&>
+ void>
{
protected:
_Container* container;
@@ -696,7 +696,7 @@ class _LIBCPP_TYPE_VIS_ONLY front_insert_iterator
void,
void,
void,
- front_insert_iterator<_Container>&>
+ void>
{
protected:
_Container* container;
@@ -729,7 +729,7 @@ class _LIBCPP_TYPE_VIS_ONLY insert_iterator
void,
void,
void,
- insert_iterator<_Container>&>
+ void>
{
protected:
_Container* container;
diff --git a/libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp
index 2611c9a4b0c..7aa7f3443aa 100644
--- a/libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp
@@ -21,7 +21,7 @@
// typedef Cont container_type;
// typedef void value_type;
// typedef void difference_type;
-// typedef back_insert_iterator<Cont>& reference;
+// typedef void reference;
// typedef void pointer;
// };
@@ -48,7 +48,7 @@ test()
static_assert((std::is_same<typename R::container_type, C>::value), "");
static_assert((std::is_same<typename R::value_type, void>::value), "");
static_assert((std::is_same<typename R::difference_type, void>::value), "");
- static_assert((std::is_same<typename R::reference, R&>::value), "");
+ static_assert((std::is_same<typename R::reference, void>::value), "");
static_assert((std::is_same<typename R::pointer, void>::value), "");
static_assert((std::is_same<typename R::iterator_category, std::output_iterator_tag>::value), "");
}
diff --git a/libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp
index 755133a9194..7a7c678edaa 100644
--- a/libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp
@@ -21,7 +21,7 @@
// typedef Container container_type;
// typedef void value_type;
// typedef void difference_type;
-// typedef front_insert_iterator<Cont>& reference;
+// typedef void reference;
// typedef void pointer;
// typedef output_iterator_tag iterator_category;
// };
@@ -49,7 +49,7 @@ test()
static_assert((std::is_same<typename R::container_type, C>::value), "");
static_assert((std::is_same<typename R::value_type, void>::value), "");
static_assert((std::is_same<typename R::difference_type, void>::value), "");
- static_assert((std::is_same<typename R::reference, R&>::value), "");
+ static_assert((std::is_same<typename R::reference, void>::value), "");
static_assert((std::is_same<typename R::pointer, void>::value), "");
static_assert((std::is_same<typename R::iterator_category, std::output_iterator_tag>::value), "");
}
diff --git a/libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp
index cf63df63e89..5b61a389513 100644
--- a/libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp
+++ b/libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp
@@ -22,7 +22,7 @@
// typedef Cont container_type;
// typedef void value_type;
// typedef void difference_type;
-// typedef insert_iterator<Cont>& reference;
+// typedef void reference;
// typedef void pointer;
// };
@@ -53,7 +53,7 @@ test()
static_assert((std::is_same<typename R::container_type, C>::value), "");
static_assert((std::is_same<typename R::value_type, void>::value), "");
static_assert((std::is_same<typename R::difference_type, void>::value), "");
- static_assert((std::is_same<typename R::reference, R&>::value), "");
+ static_assert((std::is_same<typename R::reference, void>::value), "");
static_assert((std::is_same<typename R::pointer, void>::value), "");
static_assert((std::is_same<typename R::iterator_category, std::output_iterator_tag>::value), "");
}
OpenPOWER on IntegriCloud