summaryrefslogtreecommitdiffstats
path: root/libcxx/include/deque
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-07-21 03:20:17 +0000
committerEric Fiselier <eric@efcs.ca>2016-07-21 03:20:17 +0000
commit0e411641a338b0effbdcbcd6f0772a0663729afd (patch)
tree0c0f13d524a1dede6b8bf225a6110a9bfc19efd9 /libcxx/include/deque
parentfa7c6f0d84bc1148eb1d17a18ad0b80d5521ba16 (diff)
downloadbcm5719-llvm-0e411641a338b0effbdcbcd6f0772a0663729afd.tar.gz
bcm5719-llvm-0e411641a338b0effbdcbcd6f0772a0663729afd.zip
Implement P0084r2. Changing emplace return types.
llvm-svn: 276230
Diffstat (limited to 'libcxx/include/deque')
-rw-r--r--libcxx/include/deque17
1 files changed, 10 insertions, 7 deletions
diff --git a/libcxx/include/deque b/libcxx/include/deque
index 57650427645..4c688132b52 100644
--- a/libcxx/include/deque
+++ b/libcxx/include/deque
@@ -110,8 +110,8 @@ public:
void push_front(value_type&& v);
void push_back(const value_type& v);
void push_back(value_type&& v);
- template <class... Args> void emplace_front(Args&&... args);
- template <class... Args> void emplace_back(Args&&... args);
+ template <class... Args> reference emplace_front(Args&&... args);
+ template <class... Args> reference emplace_back(Args&&... args);
template <class... Args> iterator emplace(const_iterator p, Args&&... args);
iterator insert(const_iterator p, const value_type& v);
iterator insert(const_iterator p, value_type&& v);
@@ -1344,8 +1344,8 @@ public:
void push_back(const value_type& __v);
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
#ifndef _LIBCPP_HAS_NO_VARIADICS
- template <class... _Args> void emplace_front(_Args&&... __args);
- template <class... _Args> void emplace_back(_Args&&... __args);
+ template <class... _Args> reference emplace_front(_Args&&... __args);
+ template <class... _Args> reference emplace_back(_Args&&... __args);
template <class... _Args> iterator emplace(const_iterator __p, _Args&&... __args);
#endif // _LIBCPP_HAS_NO_VARIADICS
void push_front(value_type&& __v);
@@ -1824,15 +1824,17 @@ deque<_Tp, _Allocator>::push_back(value_type&& __v)
template <class _Tp, class _Allocator>
template <class... _Args>
-void
+typename deque<_Tp, _Allocator>::reference
deque<_Tp, _Allocator>::emplace_back(_Args&&... __args)
{
allocator_type& __a = __base::__alloc();
if (__back_spare() == 0)
__add_back_capacity();
// __back_spare() >= 1
- __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), _VSTD::forward<_Args>(__args)...);
+ __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()),
+ _VSTD::forward<_Args>(__args)...);
++__base::size();
+ return *--__base::end();
}
#endif // _LIBCPP_HAS_NO_VARIADICS
@@ -1870,7 +1872,7 @@ deque<_Tp, _Allocator>::push_front(value_type&& __v)
template <class _Tp, class _Allocator>
template <class... _Args>
-void
+typename deque<_Tp, _Allocator>::reference
deque<_Tp, _Allocator>::emplace_front(_Args&&... __args)
{
allocator_type& __a = __base::__alloc();
@@ -1880,6 +1882,7 @@ deque<_Tp, _Allocator>::emplace_front(_Args&&... __args)
__alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), _VSTD::forward<_Args>(__args)...);
--__base::__start_;
++__base::size();
+ return *__base::begin();
}
#endif // _LIBCPP_HAS_NO_VARIADICS
OpenPOWER on IntegriCloud