summaryrefslogtreecommitdiffstats
path: root/libcxx/include/iterator
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-04-22 00:49:12 +0000
committerEric Fiselier <eric@efcs.ca>2016-04-22 00:49:12 +0000
commit906c50859b0d75725850b770f87b71b9d541ecd4 (patch)
tree37a61766d513d4145a4a1e229ab8acf2759f5c5c /libcxx/include/iterator
parentb7f045fc7d97c53ee1b1e9fc78fe6e3eac8fc05f (diff)
downloadbcm5719-llvm-906c50859b0d75725850b770f87b71b9d541ecd4.tar.gz
bcm5719-llvm-906c50859b0d75725850b770f87b71b9d541ecd4.zip
Fix LWG issue #2106: move_iterators returning prvalues
llvm-svn: 267091
Diffstat (limited to 'libcxx/include/iterator')
-rw-r--r--libcxx/include/iterator7
1 files changed, 6 insertions, 1 deletions
diff --git a/libcxx/include/iterator b/libcxx/include/iterator
index e6f47230f9a..0e60aa9b38b 100644
--- a/libcxx/include/iterator
+++ b/libcxx/include/iterator
@@ -951,7 +951,12 @@ public:
typedef typename iterator_traits<iterator_type>::difference_type difference_type;
typedef iterator_type pointer;
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- typedef value_type&& reference;
+ typedef typename iterator_traits<iterator_type>::reference __reference;
+ typedef typename conditional<
+ is_reference<__reference>::value,
+ typename remove_reference<__reference>::type&&,
+ __reference
+ >::type reference;
#else
typedef typename iterator_traits<iterator_type>::reference reference;
#endif
OpenPOWER on IntegriCloud