Skip to content

Commit cf4f74d

Browse files
authored
Merge branch 'main' into feature/freestanding
2 parents 3695477 + b8aabf6 commit cf4f74d

File tree

1 file changed

+12
-79
lines changed

1 file changed

+12
-79
lines changed

include/beman/inplace_vector/inplace_vector.hpp

Lines changed: 12 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
22

3-
#pragma once
4-
#pragma GCC diagnostic ignored "-Wunused-parameter"
3+
#ifndef BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP
4+
#define BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP
55

66
#include <beman/inplace_vector/config.hpp>
77

@@ -85,7 +85,8 @@ template <class T> struct zero_sized {
8585
using size_type = uint8_t;
8686
static constexpr T *storage_data() noexcept { return nullptr; }
8787
static constexpr size_type storage_size() noexcept { return 0; }
88-
static constexpr void unsafe_set_size(size_t new_size) noexcept {
88+
static constexpr void
89+
unsafe_set_size([[maybe_unused]] size_t new_size) noexcept {
8990
IV_EXPECT(new_size == 0 &&
9091
"tried to change size of empty storage to non-zero value");
9192
}
@@ -232,34 +233,6 @@ struct inplace_vector
232233

233234
// [containers.sequences.inplace_vector.cons], construct/copy/destroy
234235
constexpr inplace_vector() noexcept = default;
235-
// constexpr explicit inplace_vector(size_type n);
236-
// constexpr inplace_vector(size_type n, const T& value);
237-
// template <class InputIterator> // BUGBUG: why not model input_iterator?
238-
// constexpr inplace_vector(InputIterator first, InputIterator
239-
// last);
240-
// template <details::inplace_vector::container_compatible_range<T> R>
241-
// constexpr inplace_vector(from_range_t, R&& rg);
242-
// from base-class, trivial if is_trivially_copy_constructible_v<T>:
243-
// constexpr inplace_vector(const inplace_vector&);
244-
// from base-class, trivial if is_trivially_move_constructible_v<T>
245-
// constexpr inplace_vector(inplace_vector&&) noexcept(N == 0 ||
246-
// std::is_nothrow_move_constructible_v<T>);
247-
// constexpr inplace_vector(std::initializer_list<T> il);
248-
// from base-class, trivial if is_trivially_destructible_v<T>
249-
// constexpr ~inplace_vector();
250-
// from base-class, trivial if is_trivially_destructible_v<T> &&
251-
// is_trivially_copy_assignable_v<T>
252-
// constexpr inplace_vector& operator=(const inplace_vector& other);
253-
// from base-class, trivial if is_trivially_destructible_v<T> &&
254-
// is_trivially_copy_assignable_v<T>
255-
// constexpr inplace_vector& operator=(inplace_vector&& other)
256-
// noexcept(N == 0 || is_nothrow_move_assignable_v<T>);
257-
// template <class InputIterator> // BUGBUG: why not model input_iterator
258-
// constexpr void assign(InputIterator first, InputIterator last);
259-
// template<details::inplace_vector::container_compatible_range<T> R>
260-
// constexpr void assign_range(R&& rg);
261-
// constexpr void assign(size_type n, const T& u);
262-
// constexpr void assign(std::initializer_list<T> il);
263236

264237
// iterators
265238
constexpr iterator begin() noexcept { return storage_data(); }
@@ -294,8 +267,7 @@ struct inplace_vector
294267
constexpr size_type size() const noexcept { return storage_size(); }
295268
static constexpr size_type max_size() noexcept { return N; }
296269
static constexpr size_type capacity() noexcept { return N; }
297-
// constexpr void resize(size_type sz);
298-
// constexpr void resize(size_type sz, const T& c);
270+
299271
constexpr void reserve(size_type n) BEMAN_IV_FREESTANDING_DELETE({
300272
if (n > N) [[unlikely]]
301273
throw std::bad_alloc();
@@ -310,8 +282,6 @@ struct inplace_vector
310282
constexpr const_reference operator[](size_type n) const {
311283
return details::inplace_vector::index(*this, n);
312284
}
313-
// constexpr const_reference at(size_type n) const;
314-
// constexpr reference at(size_type n);
315285
constexpr reference front() {
316286
return details::inplace_vector::index(*this, size_type(0));
317287
}
@@ -329,64 +299,25 @@ struct inplace_vector
329299
constexpr T *data() noexcept { return storage_data(); }
330300
constexpr const T *data() const noexcept { return storage_data(); }
331301

332-
// [containers.sequences.inplace_vector.modifiers], modifiers
333-
// template <class... Args>
334-
// constexpr T& emplace_back(Args&&... args);
335-
// constexpr T& push_back(const T& x);
336-
// constexpr T& push_back(T&& x);
337-
// template<details::inplace_vector::container_compatible_range<T> R>
338-
// constexpr void append_range(R&& rg);
339-
// constexpr void pop_back();
340-
341-
// template<class... Args>
342-
// constexpr T* try_emplace_back(Args&&... args);
343-
// constexpr T* try_push_back(const T& value);
344-
// constexpr T* try_push_back(T&& value);
345-
346-
// template<class... Args>
347-
// constexpr T& unchecked_emplace_back(Args&&... args);
348-
// constexpr T& unchecked_push_back(const T& value);
349-
// constexpr T& unchecked_push_back(T&& value);
350-
351-
// template <class... Args>
352-
// constexpr iterator emplace(const_iterator position, Args&&... args);
353-
// constexpr iterator insert(const_iterator position, const T& x);
354-
// constexpr iterator insert(const_iterator position, T&& x);
355-
// constexpr iterator insert(const_iterator position, size_type n, const
356-
// T& x);
357-
// template <class InputIterator>
358-
// constexpr iterator insert(const_iterator position, InputIterator
359-
// first, InputIterator last);
360-
// template<details::inplace_vector::container_compatible_range<T> R>
361-
// constexpr iterator insert_range(const_iterator position, R&& rg);
362-
// constexpr iterator insert(const_iterator position,
363-
// std::initializer_list<T>
364-
// il); constexpr iterator erase(const_iterator position); constexpr
365-
// iterator erase(const_iterator first, const_iterator last); constexpr
366-
// void swap(inplace_vector& x)
367-
// noexcept(N == 0 || (std::is_nothrow_swappable_v<T> &&
368-
// std::is_nothrow_move_constructible_v<T>));
369-
// constexpr void clear() noexcept;
370-
371302
constexpr friend bool operator==(const inplace_vector &x,
372303
const inplace_vector &y) {
373304
return x.size() == y.size() && std::ranges::equal(x, y);
374305
}
375-
// constexpr friend auto /*synth-three-way-result<T>*/
376-
// operator<=>(const inplace_vector& x, const inplace_vector& y);
377306
constexpr friend void swap(inplace_vector &x, inplace_vector &y) noexcept(
378307
N == 0 || (std::is_nothrow_swappable_v<T> &&
379308
std::is_nothrow_move_constructible_v<T>)) {
380309
x.swap(y);
381310
}
382311

383312
private: // Utilities
384-
constexpr void assert_iterator_in_range(const_iterator it) noexcept {
313+
constexpr void
314+
assert_iterator_in_range([[maybe_unused]] const_iterator it) noexcept {
385315
IV_EXPECT(begin() <= it && "iterator not in range");
386316
IV_EXPECT(it <= end() && "iterator not in range");
387317
}
388-
constexpr void assert_valid_iterator_pair(const_iterator first,
389-
const_iterator last) noexcept {
318+
constexpr void
319+
assert_valid_iterator_pair([[maybe_unused]] const_iterator first,
320+
[[maybe_unused]] const_iterator last) noexcept {
390321
IV_EXPECT(first <= last && "invalid iterator pair");
391322
}
392323
constexpr void assert_iterator_pair_in_range(const_iterator first,
@@ -798,3 +729,5 @@ constexpr std::size_t erase_if(inplace_vector<T, N> &c, Predicate pred) {
798729

799730
#undef IV_EXPECT
800731
#undef BEMAN_IV_FREESTANDING_DELETE
732+
733+
#endif // BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP

0 commit comments

Comments
 (0)