diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-07-21 03:20:17 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-07-21 03:20:17 +0000 |
| commit | 0e411641a338b0effbdcbcd6f0772a0663729afd (patch) | |
| tree | 0c0f13d524a1dede6b8bf225a6110a9bfc19efd9 /libcxx/include/deque | |
| parent | fa7c6f0d84bc1148eb1d17a18ad0b80d5521ba16 (diff) | |
| download | bcm5719-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/deque | 17 |
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 |

