Don't use BOOST_CONTAINER_FORCEINLINE extensively, due to potential code bloat

This commit is contained in:
Ion Gaztañaga committed 2023-05-10 22:09:01 +02:00
1 parent 9c852071f9
commit 1a4a205ea6
32 files changed
+1966 -2001

No files matched your search

+78 -78
View File
@@ -508,7 +508,7 @@ class devector
* [propagate_on_container_copy_assignment]: http://en.cppreference.com/w/cpp/memory/allocator_traits
*/
BOOST_CONTAINER_FORCEINLINE devector& operator=(BOOST_COPY_ASSIGN_REF(devector) rhs)
inline devector& operator=(BOOST_COPY_ASSIGN_REF(devector) rhs)
{
const devector &x = rhs;
if (this == &x) { return *this; } // skip self
@@ -636,7 +636,7 @@ class devector
* [CopyInsertable]: http://en.cppreference.com/w/cpp/concept/CopyInsertable
* [CopyAssignable]: http://en.cppreference.com/w/cpp/concept/CopyAssignable
*/
BOOST_CONTAINER_FORCEINLINE devector& operator=(std::initializer_list<T> il)
inline devector& operator=(std::initializer_list<T> il)
{
this->assign(il.begin(), il.end());
return *this;
@@ -733,7 +733,7 @@ class devector
* [CopyInsertable]: http://en.cppreference.com/w/cpp/concept/CopyInsertable
* [CopyAssignable]: http://en.cppreference.com/w/cpp/concept/CopyAssignable
*/
BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const T& u)
inline void assign(size_type n, const T& u)
{
cvalue_iterator first(u, n);
cvalue_iterator last;
@@ -742,7 +742,7 @@ class devector
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
/** **Equivalent to**: `assign(il.begin(), il.end())`. */
BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<T> il)
inline void assign(std::initializer_list<T> il)
{
this->assign(il.begin(), il.end());
}
@@ -753,19 +753,19 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
allocator_type get_allocator() const BOOST_NOEXCEPT
{
return static_cast<const allocator_type&>(m_);
}
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const allocator_type &get_stored_allocator() const BOOST_NOEXCEPT
{
return static_cast<const allocator_type&>(m_);
}
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
allocator_type &get_stored_allocator() BOOST_NOEXCEPT
{
return static_cast<allocator_type&>(m_);
@@ -779,7 +779,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
iterator begin() BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
@@ -791,7 +791,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_iterator begin() const BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
@@ -802,7 +802,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
iterator end() BOOST_NOEXCEPT
{
return m_.buffer + m_.back_idx;
@@ -813,7 +813,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_iterator end() const BOOST_NOEXCEPT
{
return m_.buffer + m_.back_idx;
@@ -825,7 +825,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reverse_iterator rbegin() BOOST_NOEXCEPT
{
return reverse_iterator(m_.buffer + m_.back_idx);
@@ -838,7 +838,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reverse_iterator rbegin() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.back_idx);
@@ -850,7 +850,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reverse_iterator rend() BOOST_NOEXCEPT
{
return reverse_iterator(m_.buffer + m_.front_idx);
@@ -862,7 +862,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reverse_iterator rend() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.front_idx);
@@ -874,7 +874,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_iterator cbegin() const BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
@@ -897,7 +897,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reverse_iterator crbegin() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.back_idx);
@@ -909,7 +909,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reverse_iterator crend() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.front_idx);
@@ -922,7 +922,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
bool empty() const BOOST_NOEXCEPT
{
return m_.front_idx == m_.back_idx;
@@ -933,7 +933,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type size() const BOOST_NOEXCEPT
{
return size_type(m_.back_idx - m_.front_idx);
@@ -944,7 +944,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type max_size() const BOOST_NOEXCEPT
{
size_type alloc_max = allocator_traits_type::max_size(get_allocator_ref());
@@ -961,7 +961,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type capacity() const BOOST_NOEXCEPT
{
size_type const cap_reserve = m_.capacity/devector_min_free_fraction;
@@ -974,7 +974,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type front_free_capacity() const BOOST_NOEXCEPT
{
return m_.front_idx;
@@ -986,7 +986,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type back_free_capacity() const BOOST_NOEXCEPT
{
return size_type(m_.capacity - m_.back_idx);
@@ -1009,7 +1009,7 @@ class devector
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
* [DefaultConstructible]: http://en.cppreference.com/w/cpp/concept/DefaultConstructible
*/
BOOST_CONTAINER_FORCEINLINE void resize(size_type sz)
inline void resize(size_type sz)
{
this->resize_back(sz);
}
@@ -1018,7 +1018,7 @@ class devector
* **Effects**: Same as resize(sz) but creates default-initialized
* value-initialized.
*/
BOOST_CONTAINER_FORCEINLINE void resize(size_type sz, default_init_t)
inline void resize(size_type sz, default_init_t)
{
this->resize_back(sz, default_init);
}
@@ -1039,7 +1039,7 @@ class devector
*
* **Complexity**: Linear in the size of `*this` and `sz`.
*/
BOOST_CONTAINER_FORCEINLINE void resize(size_type sz, const T& c)
inline void resize(size_type sz, const T& c)
{
this->resize_back(sz, c);
}
@@ -1062,7 +1062,7 @@ class devector
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
* [DefaultConstructible]: http://en.cppreference.com/w/cpp/concept/DefaultConstructible
*/
BOOST_CONTAINER_FORCEINLINE void resize_front(size_type sz)
inline void resize_front(size_type sz)
{
resize_front_impl(sz);
BOOST_ASSERT(invariants_ok());
@@ -1085,7 +1085,7 @@ class devector
*
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
*/
BOOST_CONTAINER_FORCEINLINE void resize_front(size_type sz, default_init_t)
inline void resize_front(size_type sz, default_init_t)
{
resize_front_impl(sz, default_init);
BOOST_ASSERT(invariants_ok());
@@ -1108,7 +1108,7 @@ class devector
*
* **Complexity**: Linear in the size of `*this` and `sz`.
*/
BOOST_CONTAINER_FORCEINLINE void resize_front(size_type sz, const T& c)
inline void resize_front(size_type sz, const T& c)
{
resize_front_impl(sz, c);
BOOST_ASSERT(invariants_ok());
@@ -1132,7 +1132,7 @@ class devector
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
* [DefaultConstructible]: http://en.cppreference.com/w/cpp/concept/DefaultConstructible
*/
BOOST_CONTAINER_FORCEINLINE void resize_back(size_type sz)
inline void resize_back(size_type sz)
{
resize_back_impl(sz);
BOOST_ASSERT(invariants_ok());
@@ -1155,7 +1155,7 @@ class devector
*
* [MoveInsertable]: http://en.cppreference.com/w/cpp/concept/MoveInsertable
*/
BOOST_CONTAINER_FORCEINLINE void resize_back(size_type sz, default_init_t)
inline void resize_back(size_type sz, default_init_t)
{
resize_back_impl(sz, default_init);
BOOST_ASSERT(invariants_ok());
@@ -1177,7 +1177,7 @@ class devector
*
* **Complexity**: Linear in the size of `*this` and `sz`.
*/
BOOST_CONTAINER_FORCEINLINE void resize_back(size_type sz, const T& c)
inline void resize_back(size_type sz, const T& c)
{
resize_back_impl(sz, c);
BOOST_ASSERT(invariants_ok());
@@ -1199,7 +1199,7 @@ class devector
*
* **Throws**: length_error if `new_capacity > max_size()`.
*/
BOOST_CONTAINER_FORCEINLINE void reserve(size_type new_capacity)
inline void reserve(size_type new_capacity)
{
if (this->capacity() < new_capacity) {
const size_type rounder = devector_min_free_fraction - 2u;
@@ -1228,7 +1228,7 @@ class devector
*
* **Throws**: `length_error` if `new_capacity > max_size()`.
*/
BOOST_CONTAINER_FORCEINLINE void reserve_front(size_type new_capacity)
inline void reserve_front(size_type new_capacity)
{
if (front_capacity() >= new_capacity) { return; }
@@ -1253,7 +1253,7 @@ class devector
*
* **Throws**: length_error if `new_capacity > max_size()`.
*/
BOOST_CONTAINER_FORCEINLINE void reserve_back(size_type new_capacity)
inline void reserve_back(size_type new_capacity)
{
if (back_capacity() >= new_capacity) { return; }
@@ -1274,7 +1274,7 @@ class devector
*
* **Complexity**: Linear in the size of *this.
*/
BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
inline void shrink_to_fit()
{
if(this->front_capacity() || this->back_capacity())
this->reallocate_at(size(), 0);
@@ -1289,7 +1289,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reference operator[](size_type n) BOOST_NOEXCEPT
{
BOOST_ASSERT(n < size());
@@ -1303,7 +1303,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reference operator[](size_type n) const BOOST_NOEXCEPT
{
BOOST_ASSERT(n < size());
@@ -1317,7 +1317,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reference at(size_type n)
{
if (size() <= n)
@@ -1332,7 +1332,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reference at(size_type n) const
{
if (size() <= n)
@@ -1347,7 +1347,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reference front() BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1362,7 +1362,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reference front() const BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1377,7 +1377,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
reference back() BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1392,7 +1392,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const_reference back() const BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1407,7 +1407,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
T* data() BOOST_NOEXCEPT
{
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
@@ -1420,7 +1420,7 @@ class devector
*
* **Complexity**: Constant.
*/
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
const T* data() const BOOST_NOEXCEPT
{
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
@@ -1467,7 +1467,7 @@ class devector
#define BOOST_CONTAINER_DEVECTOR_EMPLACE_FRONT(N) \
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
BOOST_CONTAINER_FORCEINLINE reference emplace_front(BOOST_MOVE_UREF##N)\
inline reference emplace_front(BOOST_MOVE_UREF##N)\
{\
if (front_free_capacity())\
{\
@@ -1562,7 +1562,7 @@ class devector
*/
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
template <class... Args>
BOOST_CONTAINER_FORCEINLINE reference emplace_back(Args&&... args)
inline reference emplace_back(Args&&... args)
{
if (BOOST_LIKELY(this->back_free_capacity() != 0)){
pointer const p = m_.buffer + m_.back_idx;
@@ -1581,7 +1581,7 @@ class devector
#define BOOST_CONTAINER_DEVECTOR_EMPLACE_BACK(N) \
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
inline reference emplace_back(BOOST_MOVE_UREF##N)\
{\
if (this->back_free_capacity()){\
pointer const p = m_.buffer + m_.back_idx;\
@@ -1855,7 +1855,7 @@ class devector
* [CopyInsertable]: http://en.cppreference.com/w/cpp/concept/CopyInsertable
* [CopyAssignable]: http://en.cppreference.com/w/cpp/concept/CopyAssignable
*/
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, size_type n, const T& x)
inline iterator insert(const_iterator position, size_type n, const T& x)
{
cvalue_iterator first(x, n);
cvalue_iterator last = first + n;
@@ -1928,7 +1928,7 @@ class devector
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
template <class ForwardIterator>
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, ForwardIterator first, ForwardIterator last
inline iterator insert(const_iterator position, ForwardIterator first, ForwardIterator last
//Other iterators
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
< void
@@ -1944,7 +1944,7 @@ class devector
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
/** **Equivalent to**: `insert(position, il.begin(), il.end())` */
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator position, std::initializer_list<T> il)
inline iterator insert(const_iterator position, std::initializer_list<T> il)
{
return this->insert(position, il.begin(), il.end());
}
@@ -2106,99 +2106,99 @@ class devector
m_.front_idx = m_.back_idx = 0;
}
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator==(const devector& x, const devector& y)
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator!=(const devector& x, const devector& y)
{ return !(x == y); }
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator< (const devector& x, const devector& y)
{ return boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator>(const devector& x, const devector& y)
{ return y < x; }
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator<=(const devector& x, const devector& y)
{ return !(y < x); }
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
friend bool operator>=(const devector& x, const devector& y)
{ return !(x < y); }
BOOST_CONTAINER_FORCEINLINE friend void swap(devector& x, devector& y)
inline friend void swap(devector& x, devector& y)
BOOST_NOEXCEPT_IF( allocator_traits_type::propagate_on_container_swap::value
|| allocator_traits_type::is_always_equal::value)
{ x.swap(y); }
private:
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
size_type pos_to_index(const_iterator i) const
{
return static_cast<size_type>(i - cbegin());
}
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
BOOST_CONTAINER_ATTRIBUTE_NODISCARD inline
bool should_move_back(const_iterator i) const
{
return static_cast<size_type>(this->pos_to_index(i)) >= this->size()/2u;
}
BOOST_CONTAINER_FORCEINLINE static iterator unconst_iterator(const_iterator i)
inline static iterator unconst_iterator(const_iterator i)
{
return boost::intrusive::pointer_traits<pointer>::const_cast_from(i);
}
BOOST_CONTAINER_FORCEINLINE size_type front_capacity() const
inline size_type front_capacity() const
{
return m_.back_idx;
}
BOOST_CONTAINER_FORCEINLINE size_type back_capacity() const
inline size_type back_capacity() const
{
return size_type(m_.capacity - m_.front_idx);
}
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
BOOST_CONTAINER_FORCEINLINE T* priv_raw_begin() BOOST_NOEXCEPT
inline T* priv_raw_begin() BOOST_NOEXCEPT
{ return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx; }
BOOST_CONTAINER_FORCEINLINE T* priv_raw_end() BOOST_NOEXCEPT
inline T* priv_raw_end() BOOST_NOEXCEPT
{ return boost::movelib::to_raw_pointer(m_.buffer) + m_.back_idx; }
template <class U>
BOOST_CONTAINER_FORCEINLINE void priv_push_front(BOOST_FWD_REF(U) u)
inline void priv_push_front(BOOST_FWD_REF(U) u)
{
this->emplace_front(boost::forward<U>(u));
}
template <class U>
BOOST_CONTAINER_FORCEINLINE void priv_push_back(BOOST_FWD_REF(U) u)
inline void priv_push_back(BOOST_FWD_REF(U) u)
{
this->emplace_back(boost::forward<U>(u));
}
template <class U>
BOOST_CONTAINER_FORCEINLINE iterator priv_insert(const_iterator pos, BOOST_FWD_REF(U) u)
inline iterator priv_insert(const_iterator pos, BOOST_FWD_REF(U) u)
{
return this->emplace(pos, boost::forward<U>(u));
}
// allocator_type wrappers
BOOST_CONTAINER_FORCEINLINE allocator_type& get_allocator_ref() BOOST_NOEXCEPT
inline allocator_type& get_allocator_ref() BOOST_NOEXCEPT
{
return static_cast<allocator_type&>(m_);
}
BOOST_CONTAINER_FORCEINLINE const allocator_type& get_allocator_ref() const BOOST_NOEXCEPT
inline const allocator_type& get_allocator_ref() const BOOST_NOEXCEPT
{
return static_cast<const allocator_type&>(m_);
}
@@ -2230,7 +2230,7 @@ class devector
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
template <typename... Args>
BOOST_CONTAINER_FORCEINLINE void alloc_construct(pointer dst, Args&&... args)
inline void alloc_construct(pointer dst, Args&&... args)
{
allocator_traits_type::construct(
get_allocator_ref(),
@@ -2260,7 +2260,7 @@ class devector
#define BOOST_CONTAINER_DEVECTOR_ALLOC_CONSTRUCT(N) \
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
BOOST_CONTAINER_FORCEINLINE void alloc_construct(pointer dst BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
inline void alloc_construct(pointer dst BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
{\
allocator_traits_type::construct(\
get_allocator_ref(), boost::movelib::to_raw_pointer(dst) BOOST_MOVE_I##N BOOST_MOVE_FWD##N );\
@@ -2783,7 +2783,7 @@ class devector
}
template <typename ForwardIterator>
BOOST_CONTAINER_FORCEINLINE void overwrite_buffer(ForwardIterator first, ForwardIterator last)
inline void overwrite_buffer(ForwardIterator first, ForwardIterator last)
{
this->overwrite_buffer_impl(first, last,
dtl::bool_<dtl::is_trivially_destructible<T>::value>());
@@ -2894,17 +2894,17 @@ class devector
i.back_idx = 0;
}
BOOST_CONTAINER_FORCEINLINE void set_back_idx(size_type bi)
inline void set_back_idx(size_type bi)
{
back_idx = static_cast<stored_size_type>(bi);
}
BOOST_CONTAINER_FORCEINLINE void set_front_idx(size_type fi)
inline void set_front_idx(size_type fi)
{
front_idx = static_cast<stored_size_type>(fi);
}
BOOST_CONTAINER_FORCEINLINE void set_capacity(size_type c)
inline void set_capacity(size_type c)
{
capacity = static_cast<stored_size_type>(c);
}