Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/vector
Show First 20 Lines • Show All 369 Lines • ▼ Show 20 Lines | #if _LIBCPP_STD_VER <= 14 | ||||
_NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value) | _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value) | ||||
#else | #else | ||||
_NOEXCEPT | _NOEXCEPT | ||||
#endif | #endif | ||||
: __end_cap_(nullptr, __a) | : __end_cap_(nullptr, __a) | ||||
{ | { | ||||
std::__debug_db_insert_c(this); | std::__debug_db_insert_c(this); | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n); | ||||
#if _LIBCPP_STD_VER > 11 | #if _LIBCPP_STD_VER > 11 | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n, const allocator_type& __a); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(size_type __n, const value_type& __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x); | ||||
template <class = __enable_if_t<__is_allocator<_Allocator>::value> > | template <class = __enable_if_t<__is_allocator<_Allocator>::value> > | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(size_type __n, const value_type& __x, const allocator_type& __a) | vector(size_type __n, const value_type& __x, const allocator_type& __a) | ||||
: __end_cap_(nullptr, __a) | : __end_cap_(nullptr, __a) | ||||
{ | { | ||||
std::__debug_db_insert_c(this); | std::__debug_db_insert_c(this); | ||||
if (__n > 0) | if (__n > 0) | ||||
{ | { | ||||
__vallocate(__n); | __vallocate(__n); | ||||
__construct_at_end(__n, __x); | __construct_at_end(__n, __x); | ||||
} | } | ||||
} | } | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(_InputIterator __first, | vector(_InputIterator __first, | ||||
typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value && | typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_InputIterator>::reference>::value, | typename iterator_traits<_InputIterator>::reference>::value, | ||||
_InputIterator>::type __last); | _InputIterator>::type __last); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a, | vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a, | ||||
typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value && | typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_InputIterator>::reference>::value>::type* = 0); | typename iterator_traits<_InputIterator>::reference>::value>::type* = 0); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(_ForwardIterator __first, | vector(_ForwardIterator __first, | ||||
typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value && | typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_ForwardIterator>::reference>::value, | typename iterator_traits<_ForwardIterator>::reference>::value, | ||||
_ForwardIterator>::type __last); | _ForwardIterator>::type __last); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a, | vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a, | ||||
typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value && | typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0); | typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
~vector() | ~vector() | ||||
{ | { | ||||
__annotate_delete(); | __annotate_delete(); | ||||
std::__debug_db_erase_c(this); | std::__debug_db_erase_c(this); | ||||
if (this->__begin_ != nullptr) | if (this->__begin_ != nullptr) | ||||
{ | { | ||||
__clear(); | __clear(); | ||||
__alloc_traits::deallocate(__alloc(), this->__begin_, capacity()); | __alloc_traits::deallocate(__alloc(), this->__begin_, capacity()); | ||||
} | } | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI vector(const vector& __x); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __x, const __type_identity_t<allocator_type>& __a); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI vector(const vector& __x, const __type_identity_t<allocator_type>& __a); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector& operator=(const vector& __x); | vector& operator=(const vector& __x); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(initializer_list<value_type> __il); | vector(initializer_list<value_type> __il); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
Show All 14 Lines | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector(vector&& __x, const __type_identity_t<allocator_type>& __a); | vector(vector&& __x, const __type_identity_t<allocator_type>& __a); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
vector& operator=(vector&& __x) | vector& operator=(vector&& __x) | ||||
_NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); | _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value && | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value && | |||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_InputIterator>::reference>::value, | typename iterator_traits<_InputIterator>::reference>::value, | ||||
void | void | ||||
>::type | >::type | ||||
assign(_InputIterator __first, _InputIterator __last); | assign(_InputIterator __first, _InputIterator __last); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value && | __is_cpp17_forward_iterator<_ForwardIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_ForwardIterator>::reference>::value, | typename iterator_traits<_ForwardIterator>::reference>::value, | ||||
void | void | ||||
>::type | >::type | ||||
assign(_ForwardIterator __first, _ForwardIterator __last); | assign(_ForwardIterator __first, _ForwardIterator __last); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void assign(size_type __n, const_reference __u); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void assign(size_type __n, const_reference __u); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void assign(initializer_list<value_type> __il) | void assign(initializer_list<value_type> __il) | ||||
{assign(__il.begin(), __il.end());} | {assign(__il.begin(), __il.end());} | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
Show All 35 Lines | #endif | ||||
size_type size() const _NOEXCEPT | size_type size() const _NOEXCEPT | ||||
{return static_cast<size_type>(this->__end_ - this->__begin_);} | {return static_cast<size_type>(this->__end_ - this->__begin_);} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
size_type capacity() const _NOEXCEPT | size_type capacity() const _NOEXCEPT | ||||
{return static_cast<size_type>(__end_cap() - this->__begin_);} | {return static_cast<size_type>(__end_cap() - this->__begin_);} | ||||
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
bool empty() const _NOEXCEPT | bool empty() const _NOEXCEPT | ||||
{return this->__begin_ == this->__end_;} | {return this->__begin_ == this->__end_;} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 size_type max_size() const _NOEXCEPT; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI size_type max_size() const _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void reserve(size_type __n); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void reserve(size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void shrink_to_fit() _NOEXCEPT; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void shrink_to_fit() _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI reference operator[](size_type __n) _NOEXCEPT; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI reference operator[](size_type __n) _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI const_reference operator[](size_type __n) const _NOEXCEPT; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI const_reference operator[](size_type __n) const _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 reference at(size_type __n); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI reference at(size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference at(size_type __n) const; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI const_reference at(size_type __n) const; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI reference front() _NOEXCEPT | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI reference front() _NOEXCEPT | ||||
{ | { | ||||
_LIBCPP_ASSERT(!empty(), "front() called on an empty vector"); | _LIBCPP_ASSERT(!empty(), "front() called on an empty vector"); | ||||
return *this->__begin_; | return *this->__begin_; | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI const_reference front() const _NOEXCEPT | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI const_reference front() const _NOEXCEPT | ||||
{ | { | ||||
Show All 29 Lines | #if _LIBCPP_STD_VER > 14 | ||||
reference emplace_back(_Args&&... __args); | reference emplace_back(_Args&&... __args); | ||||
#else | #else | ||||
void emplace_back(_Args&&... __args); | void emplace_back(_Args&&... __args); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void pop_back(); | void pop_back(); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, const_reference __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __position, const_reference __x); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, value_type&& __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __position, value_type&& __x); | ||||
template <class... _Args> | template <class... _Args> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator emplace(const_iterator __position, _Args&&... __args); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator emplace(const_iterator __position, _Args&&... __args); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | |||||
iterator insert(const_iterator __position, size_type __n, const_reference __x); | |||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, size_type __n, const_reference __x); | |||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value && | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value && | |||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_InputIterator>::reference>::value, | typename iterator_traits<_InputIterator>::reference>::value, | ||||
iterator | iterator | ||||
>::type | >::type | ||||
insert(const_iterator __position, _InputIterator __first, _InputIterator __last); | insert(const_iterator __position, _InputIterator __first, _InputIterator __last); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value && | __is_cpp17_forward_iterator<_ForwardIterator>::value && | ||||
is_constructible< | is_constructible< | ||||
value_type, | value_type, | ||||
typename iterator_traits<_ForwardIterator>::reference>::value, | typename iterator_traits<_ForwardIterator>::reference>::value, | ||||
iterator | iterator | ||||
>::type | >::type | ||||
insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); | insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
iterator insert(const_iterator __position, initializer_list<value_type> __il) | iterator insert(const_iterator __position, initializer_list<value_type> __il) | ||||
{return insert(__position, __il.begin(), __il.end());} | {return insert(__position, __il.begin(), __il.end());} | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __position); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __position); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator erase(const_iterator __first, const_iterator __last); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void clear() _NOEXCEPT | void clear() _NOEXCEPT | ||||
{ | { | ||||
size_type __old_size = size(); | size_type __old_size = size(); | ||||
__clear(); | __clear(); | ||||
__annotate_shrink(__old_size); | __annotate_shrink(__old_size); | ||||
std::__debug_db_invalidate_all(this); | std::__debug_db_invalidate_all(this); | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void resize(size_type __sz); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void resize(size_type __sz); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void resize(size_type __sz, const_reference __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void resize(size_type __sz, const_reference __x); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void swap(vector&) | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void swap(vector&) | ||||
#if _LIBCPP_STD_VER >= 14 | #if _LIBCPP_STD_VER >= 14 | ||||
_NOEXCEPT; | _NOEXCEPT; | ||||
#else | #else | ||||
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || | _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || | ||||
__is_nothrow_swappable<allocator_type>::value); | __is_nothrow_swappable<allocator_type>::value); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool __invariants() const; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI bool __invariants() const; | ||||
#ifdef _LIBCPP_ENABLE_DEBUG_MODE | #ifdef _LIBCPP_ENABLE_DEBUG_MODE | ||||
bool __dereferenceable(const const_iterator* __i) const; | bool __dereferenceable(const const_iterator* __i) const; | ||||
bool __decrementable(const const_iterator* __i) const; | bool __decrementable(const const_iterator* __i) const; | ||||
bool __addable(const const_iterator* __i, ptrdiff_t __n) const; | bool __addable(const const_iterator* __i, ptrdiff_t __n) const; | ||||
bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; | bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; | ||||
Show All 19 Lines | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __vallocate(size_type __n) { | ||||
__throw_length_error(); | __throw_length_error(); | ||||
auto __allocation = std::__allocate_at_least(__alloc(), __n); | auto __allocation = std::__allocate_at_least(__alloc(), __n); | ||||
__begin_ = __allocation.ptr; | __begin_ = __allocation.ptr; | ||||
__end_ = __allocation.ptr; | __end_ = __allocation.ptr; | ||||
__end_cap() = __begin_ + __allocation.count; | __end_cap() = __begin_ + __allocation.count; | ||||
__annotate_new(0); | __annotate_new(0); | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __vdeallocate() _NOEXCEPT; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __vdeallocate() _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI size_type __recommend(size_type __new_size) const; | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI size_type __recommend(size_type __new_size) const; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct_at_end(size_type __n); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __construct_at_end(size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void __construct_at_end(size_type __n, const_reference __x); | void __construct_at_end(size_type __n, const_reference __x); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value, | __is_cpp17_forward_iterator<_ForwardIterator>::value, | ||||
void | void | ||||
>::type | >::type | ||||
__construct_at_end(_ForwardIterator __first, _ForwardIterator __last, size_type __n); | __construct_at_end(_ForwardIterator __first, _ForwardIterator __last, size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __append(size_type __n); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __append(size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __append(size_type __n, const_reference __x); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __append(size_type __n, const_reference __x); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
iterator __make_iter(pointer __p) _NOEXCEPT; | iterator __make_iter(pointer __p) _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
const_iterator __make_iter(const_pointer __p) const _NOEXCEPT; | const_iterator __make_iter(const_pointer __p) const _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 pointer __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI pointer __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_range(pointer __from_s, pointer __from_e, pointer __to); | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __move_range(pointer __from_s, pointer __from_e, pointer __to); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, true_type) | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __move_assign(vector& __c, true_type) | ||||
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value); | _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, false_type) | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI void __move_assign(vector& __c, false_type) | ||||
_NOEXCEPT_(__alloc_traits::is_always_equal::value); | _NOEXCEPT_(__alloc_traits::is_always_equal::value); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void __destruct_at_end(pointer __new_last) _NOEXCEPT | void __destruct_at_end(pointer __new_last) _NOEXCEPT | ||||
{ | { | ||||
if (!__libcpp_is_constant_evaluated()) | if (!__libcpp_is_constant_evaluated()) | ||||
__invalidate_iterators_past(__new_last); | __invalidate_iterators_past(__new_last); | ||||
size_type __old_size = size(); | size_type __old_size = size(); | ||||
__base_destruct_at_end(__new_last); | __base_destruct_at_end(__new_last); | ||||
__annotate_shrink(__old_size); | __annotate_shrink(__old_size); | ||||
} | } | ||||
template <class _Up> | template <class _Up> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
inline void __push_back_slow_path(_Up&& __x); | inline void __push_back_slow_path(_Up&& __x); | ||||
template <class... _Args> | template <class... _Args> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
inline void __emplace_back_slow_path(_Args&&... __args); | inline void __emplace_back_slow_path(_Args&&... __args); | ||||
// The following functions are no-ops outside of AddressSanitizer mode. | // The following functions are no-ops outside of AddressSanitizer mode. | ||||
// We call annotatations only for the default Allocator because other allocators | // We call annotatations only for the default Allocator because other allocators | ||||
// may not meet the AddressSanitizer alignment constraints. | // may not meet the AddressSanitizer alignment constraints. | ||||
// See the documentation for __sanitizer_annotate_contiguous_container for more details. | // See the documentation for __sanitizer_annotate_contiguous_container for more details. | ||||
#ifndef _LIBCPP_HAS_NO_ASAN | #ifndef _LIBCPP_HAS_NO_ASAN | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void __annotate_contiguous_container(const void *__beg, const void *__end, | void __annotate_contiguous_container(const void *__beg, const void *__end, | ||||
huixie90: Is it intentional this one is left out? | |||||
const void *__old_mid, | const void *__old_mid, | ||||
const void *__new_mid) const | const void *__new_mid) const | ||||
{ | { | ||||
if (!__libcpp_is_constant_evaluated() && __beg && is_same<allocator_type, __default_allocator_type>::value) | if (!__libcpp_is_constant_evaluated() && __beg && is_same<allocator_type, __default_allocator_type>::value) | ||||
__sanitizer_annotate_contiguous_container(__beg, __end, __old_mid, __new_mid); | __sanitizer_annotate_contiguous_container(__beg, __end, __old_mid, __new_mid); | ||||
} | } | ||||
#else | #else | ||||
Show All 23 Lines | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
void __annotate_shrink(size_type __old_size) const _NOEXCEPT | void __annotate_shrink(size_type __old_size) const _NOEXCEPT | ||||
{ | { | ||||
__annotate_contiguous_container(data(), data() + capacity(), | __annotate_contiguous_container(data(), data() + capacity(), | ||||
data() + __old_size, data() + size()); | data() + __old_size, data() + size()); | ||||
} | } | ||||
struct _ConstructTransaction { | struct _ConstructTransaction { | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI | ||||
explicit _ConstructTransaction(vector &__v, size_type __n) | explicit _ConstructTransaction(vector &__v, size_type __n) | ||||
: __v_(__v), __pos_(__v.__end_), __new_end_(__v.__end_ + __n) { | : __v_(__v), __pos_(__v.__end_), __new_end_(__v.__end_ + __n) { | ||||
#ifndef _LIBCPP_HAS_NO_ASAN | #ifndef _LIBCPP_HAS_NO_ASAN | ||||
__v_.__annotate_increase(__n); | __v_.__annotate_increase(__n); | ||||
#endif | #endif | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 ~_ConstructTransaction() { | _LIBCPP_CONSTEXPR_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI ~_ConstructTransaction() { | ||||
__v_.__end_ = __pos_; | __v_.__end_ = __pos_; | ||||
#ifndef _LIBCPP_HAS_NO_ASAN | #ifndef _LIBCPP_HAS_NO_ASAN | ||||
if (__pos_ != __new_end_) { | if (__pos_ != __new_end_) { | ||||
__v_.__annotate_shrink(__new_end_ - __v_.__begin_); | __v_.__annotate_shrink(__new_end_ - __v_.__begin_); | ||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,311 Lines • ▼ Show 20 Lines | public: | ||||
vector() _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value); | vector() _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(const allocator_type& __a) | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(const allocator_type& __a) | ||||
#if _LIBCPP_STD_VER <= 14 | #if _LIBCPP_STD_VER <= 14 | ||||
_NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value); | _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value); | ||||
#else | #else | ||||
_NOEXCEPT; | _NOEXCEPT; | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 ~vector(); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 ~vector(); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n); | ||||
#if _LIBCPP_STD_VER > 11 | #if _LIBCPP_STD_VER > 11 | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n, const allocator_type& __a); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit vector(size_type __n, const allocator_type& __a); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(size_type __n, const value_type& __v); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(size_type __n, const value_type& __v); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(size_type __n, const value_type& __v, const allocator_type& __a); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(size_type __n, const value_type& __v, const allocator_type& __a); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_InputIterator __first, _InputIterator __last, | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_InputIterator __first, _InputIterator __last, | ||||
typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value>::type* = 0); | typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value>::type* = 0); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a, | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a, | ||||
typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value>::type* = 0); | typename enable_if<__is_exactly_cpp17_input_iterator<_InputIterator>::value>::type* = 0); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_ForwardIterator __first, _ForwardIterator __last, | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_ForwardIterator __first, _ForwardIterator __last, | ||||
typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0); | typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a, | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a, | ||||
typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0); | typename enable_if<__is_cpp17_forward_iterator<_ForwardIterator>::value>::type* = 0); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __v); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __v); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __v, const allocator_type& __a); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(const vector& __v, const allocator_type& __a); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector& operator=(const vector& __v); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector& operator=(const vector& __v); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(initializer_list<value_type> __il); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(initializer_list<value_type> __il); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(initializer_list<value_type> __il, const allocator_type& __a); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(initializer_list<value_type> __il, const allocator_type& __a); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
vector& operator=(initializer_list<value_type> __il) | vector& operator=(initializer_list<value_type> __il) | ||||
{assign(__il.begin(), __il.end()); return *this;} | {assign(__il.begin(), __il.end()); return *this;} | ||||
#endif // !_LIBCPP_CXX03_LANG | #endif // !_LIBCPP_CXX03_LANG | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
vector(vector&& __v) | vector(vector&& __v) | ||||
#if _LIBCPP_STD_VER > 14 | #if _LIBCPP_STD_VER > 14 | ||||
noexcept; | noexcept; | ||||
#else | #else | ||||
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value); | _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 vector(vector&& __v, const __type_identity_t<allocator_type>& __a); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 vector(vector&& __v, const __type_identity_t<allocator_type>& __a); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
vector& operator=(vector&& __v) | vector& operator=(vector&& __v) | ||||
_NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); | _NOEXCEPT_((__noexcept_move_assign_container<_Allocator, __alloc_traits>::value)); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value, | typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value, | ||||
void | void | ||||
>::type | >::type | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 assign(_InputIterator __first, _InputIterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 assign(_InputIterator __first, _InputIterator __last); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value, | __is_cpp17_forward_iterator<_ForwardIterator>::value, | ||||
void | void | ||||
>::type | >::type | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 assign(_ForwardIterator __first, _ForwardIterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 assign(_ForwardIterator __first, _ForwardIterator __last); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void assign(size_type __n, const value_type& __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void assign(size_type __n, const value_type& __x); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void assign(initializer_list<value_type> __il) | void assign(initializer_list<value_type> __il) | ||||
{assign(__il.begin(), __il.end());} | {assign(__il.begin(), __il.end());} | ||||
#endif | #endif | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 allocator_type get_allocator() const _NOEXCEPT | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 allocator_type get_allocator() const _NOEXCEPT | ||||
{return allocator_type(this->__alloc());} | {return allocator_type(this->__alloc());} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 size_type max_size() const _NOEXCEPT; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 size_type max_size() const _NOEXCEPT; | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
size_type capacity() const _NOEXCEPT | size_type capacity() const _NOEXCEPT | ||||
{return __internal_cap_to_external(__cap());} | {return __internal_cap_to_external(__cap());} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
size_type size() const _NOEXCEPT | size_type size() const _NOEXCEPT | ||||
{return __size_;} | {return __size_;} | ||||
_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
bool empty() const _NOEXCEPT | bool empty() const _NOEXCEPT | ||||
{return __size_ == 0;} | {return __size_ == 0;} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void reserve(size_type __n); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void reserve(size_type __n); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void shrink_to_fit() _NOEXCEPT; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void shrink_to_fit() _NOEXCEPT; | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
iterator begin() _NOEXCEPT | iterator begin() _NOEXCEPT | ||||
{return __make_iter(0);} | {return __make_iter(0);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
const_iterator begin() const _NOEXCEPT | const_iterator begin() const _NOEXCEPT | ||||
{return __make_iter(0);} | {return __make_iter(0);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
Show All 26 Lines | #endif | ||||
const_reverse_iterator crbegin() const _NOEXCEPT | const_reverse_iterator crbegin() const _NOEXCEPT | ||||
{return rbegin();} | {return rbegin();} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
const_reverse_iterator crend() const _NOEXCEPT | const_reverse_iterator crend() const _NOEXCEPT | ||||
{return rend();} | {return rend();} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference operator[](size_type __n) {return __make_ref(__n);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference operator[](size_type __n) {return __make_ref(__n);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference operator[](size_type __n) const {return __make_ref(__n);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference operator[](size_type __n) const {return __make_ref(__n);} | ||||
reference at(size_type __n); | _LIBCPP_HIDE_FROM_ABI reference at(size_type __n); | ||||
const_reference at(size_type __n) const; | _LIBCPP_HIDE_FROM_ABI const_reference at(size_type __n) const; | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference front() {return __make_ref(0);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference front() {return __make_ref(0);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference front() const {return __make_ref(0);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference front() const {return __make_ref(0);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference back() {return __make_ref(__size_ - 1);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference back() {return __make_ref(__size_ - 1);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference back() const {return __make_ref(__size_ - 1);} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 const_reference back() const {return __make_ref(__size_ - 1);} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void push_back(const value_type& __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void push_back(const value_type& __x); | ||||
#if _LIBCPP_STD_VER > 11 | #if _LIBCPP_STD_VER > 11 | ||||
template <class... _Args> | template <class... _Args> | ||||
#if _LIBCPP_STD_VER > 14 | #if _LIBCPP_STD_VER > 14 | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference emplace_back(_Args&&... __args) | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 reference emplace_back(_Args&&... __args) | ||||
#else | #else | ||||
_LIBCPP_HIDE_FROM_ABI void emplace_back(_Args&&... __args) | _LIBCPP_HIDE_FROM_ABI void emplace_back(_Args&&... __args) | ||||
#endif | #endif | ||||
{ | { | ||||
push_back ( value_type ( std::forward<_Args>(__args)... )); | push_back ( value_type ( std::forward<_Args>(__args)... )); | ||||
#if _LIBCPP_STD_VER > 14 | #if _LIBCPP_STD_VER > 14 | ||||
return this->back(); | return this->back(); | ||||
#endif | #endif | ||||
} | } | ||||
#endif | #endif | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void pop_back() {--__size_;} | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void pop_back() {--__size_;} | ||||
#if _LIBCPP_STD_VER > 11 | #if _LIBCPP_STD_VER > 11 | ||||
template <class... _Args> | template <class... _Args> | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator emplace(const_iterator __position, _Args&&... __args) | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator emplace(const_iterator __position, _Args&&... __args) | ||||
{ return insert ( __position, value_type ( std::forward<_Args>(__args)... )); } | { return insert ( __position, value_type ( std::forward<_Args>(__args)... )); } | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, const value_type& __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, const value_type& __x); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, size_type __n, const value_type& __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator insert(const_iterator __position, size_type __n, const value_type& __x); | ||||
template <class _InputIterator> | template <class _InputIterator> | ||||
typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value, | typename enable_if <__is_exactly_cpp17_input_iterator<_InputIterator>::value, | ||||
iterator | iterator | ||||
>::type | >::type | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 insert(const_iterator __position, _InputIterator __first, _InputIterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 insert(const_iterator __position, _InputIterator __first, _InputIterator __last); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value, | __is_cpp17_forward_iterator<_ForwardIterator>::value, | ||||
iterator | iterator | ||||
>::type | >::type | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last); | ||||
#ifndef _LIBCPP_CXX03_LANG | #ifndef _LIBCPP_CXX03_LANG | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
iterator insert(const_iterator __position, initializer_list<value_type> __il) | iterator insert(const_iterator __position, initializer_list<value_type> __il) | ||||
{return insert(__position, __il.begin(), __il.end());} | {return insert(__position, __il.begin(), __il.end());} | ||||
#endif | #endif | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator erase(const_iterator __position); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator erase(const_iterator __position); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 iterator erase(const_iterator __first, const_iterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 iterator erase(const_iterator __first, const_iterator __last); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void clear() _NOEXCEPT {__size_ = 0;} | void clear() _NOEXCEPT {__size_ = 0;} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void swap(vector&) | _LIBCPP_CONSTEXPR_AFTER_CXX17 void swap(vector&) | ||||
#if _LIBCPP_STD_VER >= 14 | #if _LIBCPP_STD_VER >= 14 | ||||
_NOEXCEPT; | _NOEXCEPT; | ||||
#else | #else | ||||
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || | _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || | ||||
__is_nothrow_swappable<allocator_type>::value); | __is_nothrow_swappable<allocator_type>::value); | ||||
#endif | #endif | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 static void swap(reference __x, reference __y) _NOEXCEPT { std::swap(__x, __y); } | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 static void swap(reference __x, reference __y) _NOEXCEPT { std::swap(__x, __y); } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void resize(size_type __sz, value_type __x = false); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void resize(size_type __sz, value_type __x = false); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void flip() _NOEXCEPT; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void flip() _NOEXCEPT; | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 bool __invariants() const; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 bool __invariants() const; | ||||
private: | private: | ||||
_LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI | _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI | ||||
void __throw_length_error() const { | void __throw_length_error() const { | ||||
std::__throw_length_error("vector"); | std::__throw_length_error("vector"); | ||||
} | } | ||||
_LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI | _LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI | ||||
Show All 16 Lines | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __vallocate(size_type __n) { | ||||
__size_ = 0; | __size_ = 0; | ||||
__cap() = __allocation.count; | __cap() = __allocation.count; | ||||
if (__libcpp_is_constant_evaluated()) { | if (__libcpp_is_constant_evaluated()) { | ||||
for (size_type __i = 0; __i != __cap(); ++__i) | for (size_type __i = 0; __i != __cap(); ++__i) | ||||
std::__construct_at(std::__to_address(__begin_) + __i); | std::__construct_at(std::__to_address(__begin_) + __i); | ||||
} | } | ||||
} | } | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __vdeallocate() _NOEXCEPT; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __vdeallocate() _NOEXCEPT; | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
static size_type __align_it(size_type __new_size) _NOEXCEPT | static size_type __align_it(size_type __new_size) _NOEXCEPT | ||||
{return (__new_size + (__bits_per_word-1)) & ~((size_type)__bits_per_word-1);} | {return (__new_size + (__bits_per_word-1)) & ~((size_type)__bits_per_word-1);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 size_type __recommend(size_type __new_size) const; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 size_type __recommend(size_type __new_size) const; | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct_at_end(size_type __n, bool __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __construct_at_end(size_type __n, bool __x); | ||||
template <class _ForwardIterator> | template <class _ForwardIterator> | ||||
typename enable_if | typename enable_if | ||||
< | < | ||||
__is_cpp17_forward_iterator<_ForwardIterator>::value, | __is_cpp17_forward_iterator<_ForwardIterator>::value, | ||||
void | void | ||||
>::type | >::type | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 __construct_at_end(_ForwardIterator __first, _ForwardIterator __last); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 __construct_at_end(_ForwardIterator __first, _ForwardIterator __last); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __append(size_type __n, const_reference __x); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __append(size_type __n, const_reference __x); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
reference __make_ref(size_type __pos) _NOEXCEPT | reference __make_ref(size_type __pos) _NOEXCEPT | ||||
{return reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);} | {return reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
const_reference __make_ref(size_type __pos) const _NOEXCEPT { | const_reference __make_ref(size_type __pos) const _NOEXCEPT { | ||||
return __bit_const_reference<vector>(__begin_ + __pos / __bits_per_word, | return __bit_const_reference<vector>(__begin_ + __pos / __bits_per_word, | ||||
__storage_type(1) << __pos % __bits_per_word); | __storage_type(1) << __pos % __bits_per_word); | ||||
} | } | ||||
Show All 18 Lines | void __copy_assign_alloc(const vector& __c, true_type) | ||||
__vdeallocate(); | __vdeallocate(); | ||||
__alloc() = __c.__alloc(); | __alloc() = __c.__alloc(); | ||||
} | } | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void __copy_assign_alloc(const vector&, false_type) | void __copy_assign_alloc(const vector&, false_type) | ||||
{} | {} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, false_type); | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, false_type); | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, true_type) | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 void __move_assign(vector& __c, true_type) | ||||
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value); | _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value); | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void __move_assign_alloc(vector& __c) | void __move_assign_alloc(vector& __c) | ||||
_NOEXCEPT_( | _NOEXCEPT_( | ||||
!__storage_traits::propagate_on_container_move_assignment::value || | !__storage_traits::propagate_on_container_move_assignment::value || | ||||
is_nothrow_move_assignable<allocator_type>::value) | is_nothrow_move_assignable<allocator_type>::value) | ||||
{__move_assign_alloc(__c, integral_constant<bool, | {__move_assign_alloc(__c, integral_constant<bool, | ||||
__storage_traits::propagate_on_container_move_assignment::value>());} | __storage_traits::propagate_on_container_move_assignment::value>());} | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void __move_assign_alloc(vector& __c, true_type) | void __move_assign_alloc(vector& __c, true_type) | ||||
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value) | _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value) | ||||
{ | { | ||||
__alloc() = std::move(__c.__alloc()); | __alloc() = std::move(__c.__alloc()); | ||||
} | } | ||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 | ||||
void __move_assign_alloc(vector&, false_type) | void __move_assign_alloc(vector&, false_type) | ||||
_NOEXCEPT | _NOEXCEPT | ||||
{} | {} | ||||
_LIBCPP_CONSTEXPR_AFTER_CXX17 size_t __hash_code() const _NOEXCEPT; | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX17 size_t __hash_code() const _NOEXCEPT; | ||||
friend class __bit_reference<vector>; | friend class __bit_reference<vector>; | ||||
friend class __bit_const_reference<vector>; | friend class __bit_const_reference<vector>; | ||||
friend class __bit_iterator<vector, false>; | friend class __bit_iterator<vector, false>; | ||||
friend class __bit_iterator<vector, true>; | friend class __bit_iterator<vector, true>; | ||||
friend struct __bit_array<vector>; | friend struct __bit_array<vector>; | ||||
friend struct _LIBCPP_TEMPLATE_VIS hash<vector>; | friend struct _LIBCPP_TEMPLATE_VIS hash<vector>; | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 903 Lines • Show Last 20 Lines |
Is it intentional this one is left out?