Add support for [[nodiscard]]:

- Decorate container and allocator functions.
- Make sure to disable warnings in tests
- Update doxygen documentation to support it
This commit is contained in:
Ion Gaztañaga committed 2020-11-05 14:24:35 +01:00
1 parent 8a2444201a
commit 0a0ad0009e
22 files changed
+1096 -569

No files matched your search

+76 -41
View File
@@ -748,17 +748,20 @@ class devector
*
* **Complexity**: Constant.
*/
allocator_type get_allocator() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
allocator_type get_allocator() const BOOST_NOEXCEPT
{
return static_cast<const allocator_type&>(m_);
}
const allocator_type &get_stored_allocator() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const allocator_type &get_stored_allocator() const BOOST_NOEXCEPT
{
return static_cast<const allocator_type&>(m_);
}
allocator_type &get_stored_allocator() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
allocator_type &get_stored_allocator() BOOST_NOEXCEPT
{
return static_cast<allocator_type&>(m_);
}
@@ -771,7 +774,8 @@ class devector
*
* **Complexity**: Constant.
*/
iterator begin() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
iterator begin() BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
}
@@ -782,7 +786,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_iterator begin() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_iterator begin() const BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
}
@@ -792,7 +797,8 @@ class devector
*
* **Complexity**: Constant.
*/
iterator end() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
iterator end() BOOST_NOEXCEPT
{
return m_.buffer + m_.back_idx;
}
@@ -802,7 +808,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_iterator end() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_iterator end() const BOOST_NOEXCEPT
{
return m_.buffer + m_.back_idx;
}
@@ -813,7 +820,8 @@ class devector
*
* **Complexity**: Constant.
*/
reverse_iterator rbegin() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reverse_iterator rbegin() BOOST_NOEXCEPT
{
return reverse_iterator(m_.buffer + m_.back_idx);
}
@@ -825,7 +833,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reverse_iterator rbegin() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reverse_iterator rbegin() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.back_idx);
}
@@ -836,7 +845,8 @@ class devector
*
* **Complexity**: Constant.
*/
reverse_iterator rend() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reverse_iterator rend() BOOST_NOEXCEPT
{
return reverse_iterator(m_.buffer + m_.front_idx);
}
@@ -847,7 +857,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reverse_iterator rend() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reverse_iterator rend() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.front_idx);
}
@@ -858,7 +869,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_iterator cbegin() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_iterator cbegin() const BOOST_NOEXCEPT
{
return m_.buffer + m_.front_idx;
}
@@ -880,7 +892,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reverse_iterator crbegin() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reverse_iterator crbegin() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.back_idx);
}
@@ -891,7 +904,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reverse_iterator crend() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reverse_iterator crend() const BOOST_NOEXCEPT
{
return const_reverse_iterator(m_.buffer + m_.front_idx);
}
@@ -903,7 +917,8 @@ class devector
*
* **Complexity**: Constant.
*/
bool empty() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
bool empty() const BOOST_NOEXCEPT
{
return m_.front_idx == m_.back_idx;
}
@@ -913,7 +928,8 @@ class devector
*
* **Complexity**: Constant.
*/
size_type size() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
size_type size() const BOOST_NOEXCEPT
{
return m_.back_idx - m_.front_idx;
}
@@ -923,7 +939,8 @@ class devector
*
* **Complexity**: Constant.
*/
size_type max_size() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
size_type max_size() const BOOST_NOEXCEPT
{
size_type alloc_max = allocator_traits_type::max_size(get_allocator_ref());
size_type size_type_max = (size_type)-1;
@@ -935,7 +952,8 @@ class devector
*
* **Complexity**: Constant.
*/
size_type capacity() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
size_type capacity() const BOOST_NOEXCEPT
{
return m_.capacity;
}
@@ -946,7 +964,8 @@ class devector
*
* **Complexity**: Constant.
*/
size_type front_free_capacity() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
size_type front_free_capacity() const BOOST_NOEXCEPT
{
return m_.front_idx;
}
@@ -957,7 +976,8 @@ class devector
*
* **Complexity**: Constant.
*/
size_type back_free_capacity() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
size_type back_free_capacity() const BOOST_NOEXCEPT
{
return m_.capacity - m_.back_idx;
}
@@ -1212,10 +1232,10 @@ class devector
*
* **Complexity**: Constant.
*/
reference operator[](size_type n) BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reference operator[](size_type n) BOOST_NOEXCEPT
{
BOOST_ASSERT(n < size());
return *(begin() + n);
}
@@ -1226,7 +1246,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reference operator[](size_type n) const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reference operator[](size_type n) const BOOST_NOEXCEPT
{
BOOST_ASSERT(n < size());
@@ -1240,7 +1261,8 @@ class devector
*
* **Complexity**: Constant.
*/
reference at(size_type n)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reference at(size_type n)
{
if (size() <= n)
throw_out_of_range("devector::at out of range");
@@ -1254,7 +1276,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reference at(size_type n) const
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reference at(size_type n) const
{
if (size() <= n)
throw_out_of_range("devector::at out of range");
@@ -1268,7 +1291,8 @@ class devector
*
* **Complexity**: Constant.
*/
reference front() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reference front() BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1282,7 +1306,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reference front() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reference front() const BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1296,7 +1321,8 @@ class devector
*
* **Complexity**: Constant.
*/
reference back() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
reference back() BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1310,7 +1336,8 @@ class devector
*
* **Complexity**: Constant.
*/
const_reference back() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const_reference back() const BOOST_NOEXCEPT
{
BOOST_ASSERT(!empty());
@@ -1324,7 +1351,8 @@ class devector
*
* **Complexity**: Constant.
*/
T* data() BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
T* data() BOOST_NOEXCEPT
{
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
}
@@ -1336,7 +1364,8 @@ class devector
*
* **Complexity**: Constant.
*/
const T* data() const BOOST_NOEXCEPT
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
const T* data() const BOOST_NOEXCEPT
{
return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx;
}
@@ -1946,22 +1975,28 @@ class devector
m_.front_idx = m_.back_idx = 0;
}
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
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_FORCEINLINE friend bool operator!=(const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
friend bool operator!=(const devector& x, const devector& y)
{ return !(x == y); }
friend bool operator< (const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
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_FORCEINLINE friend bool operator>(const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
friend bool operator>(const devector& x, const devector& y)
{ return y < x; }
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
friend bool operator<=(const devector& x, const devector& y)
{ return !(y < x); }
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const devector& x, const devector& y)
BOOST_CONTAINER_ATTRIBUTE_NODISCARD BOOST_CONTAINER_FORCEINLINE
friend bool operator>=(const devector& x, const devector& y)
{ return !(x < y); }
BOOST_CONTAINER_FORCEINLINE friend void swap(devector& x, devector& y)
@@ -1970,10 +2005,10 @@ class devector
private:
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
T* raw_begin() BOOST_NOEXCEPT
BOOST_CONTAINER_FORCEINLINE T* raw_begin() BOOST_NOEXCEPT
{ return boost::movelib::to_raw_pointer(m_.buffer) + m_.front_idx; }
T* raw_end() BOOST_NOEXCEPT
BOOST_CONTAINER_FORCEINLINE T* raw_end() BOOST_NOEXCEPT
{ return boost::movelib::to_raw_pointer(m_.buffer) + m_.back_idx; }
@@ -2096,12 +2131,12 @@ class devector
#endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
size_type front_capacity() const
BOOST_CONTAINER_FORCEINLINE size_type front_capacity() const
{
return m_.back_idx;
}
size_type back_capacity() const
BOOST_CONTAINER_FORCEINLINE size_type back_capacity() const
{
return m_.capacity - m_.front_idx;
}