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
383312private: // 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