1- #pragma once
2- #pragma GCC diagnostic ignored "-Wunused-parameter"
1+ #ifndef BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP
2+ #define BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP
33
44/*
55 * SPDX-FileCopyrightText: Copyright (c) 2023 Gonzalo Brito Gadeschi. All rights
@@ -320,7 +320,8 @@ template <class T> struct zero_sized {
320320 using size_type = uint8_t ;
321321 static constexpr T *storage_data () noexcept { return nullptr ; }
322322 static constexpr size_type storage_size () noexcept { return 0 ; }
323- static constexpr void unsafe_set_size (size_t new_size) noexcept {
323+ static constexpr void
324+ unsafe_set_size ([[maybe_unused]] size_t new_size) noexcept {
324325 IV_EXPECT (new_size == 0 &&
325326 " tried to change size of empty storage to non-zero value" );
326327 }
@@ -467,34 +468,6 @@ struct inplace_vector
467468
468469 // [containers.sequences.inplace_vector.cons], construct/copy/destroy
469470 constexpr inplace_vector () noexcept = default;
470- // constexpr explicit inplace_vector(size_type n);
471- // constexpr inplace_vector(size_type n, const T& value);
472- // template <class InputIterator> // BUGBUG: why not model input_iterator?
473- // constexpr inplace_vector(InputIterator first, InputIterator
474- // last);
475- // template <details::inplace_vector::container_compatible_range<T> R>
476- // constexpr inplace_vector(from_range_t, R&& rg);
477- // from base-class, trivial if is_trivially_copy_constructible_v<T>:
478- // constexpr inplace_vector(const inplace_vector&);
479- // from base-class, trivial if is_trivially_move_constructible_v<T>
480- // constexpr inplace_vector(inplace_vector&&) noexcept(N == 0 ||
481- // std::is_nothrow_move_constructible_v<T>);
482- // constexpr inplace_vector(std::initializer_list<T> il);
483- // from base-class, trivial if is_trivially_destructible_v<T>
484- // constexpr ~inplace_vector();
485- // from base-class, trivial if is_trivially_destructible_v<T> &&
486- // is_trivially_copy_assignable_v<T>
487- // constexpr inplace_vector& operator=(const inplace_vector& other);
488- // from base-class, trivial if is_trivially_destructible_v<T> &&
489- // is_trivially_copy_assignable_v<T>
490- // constexpr inplace_vector& operator=(inplace_vector&& other)
491- // noexcept(N == 0 || is_nothrow_move_assignable_v<T>);
492- // template <class InputIterator> // BUGBUG: why not model input_iterator
493- // constexpr void assign(InputIterator first, InputIterator last);
494- // template<details::inplace_vector::container_compatible_range<T> R>
495- // constexpr void assign_range(R&& rg);
496- // constexpr void assign(size_type n, const T& u);
497- // constexpr void assign(std::initializer_list<T> il);
498471
499472 // iterators
500473 constexpr iterator begin () noexcept { return storage_data (); }
@@ -563,45 +536,6 @@ struct inplace_vector
563536 constexpr T *data () noexcept { return storage_data (); }
564537 constexpr const T *data () const noexcept { return storage_data (); }
565538
566- // [containers.sequences.inplace_vector.modifiers], modifiers
567- // template <class... Args>
568- // constexpr T& emplace_back(Args&&... args);
569- // constexpr T& push_back(const T& x);
570- // constexpr T& push_back(T&& x);
571- // template<details::inplace_vector::container_compatible_range<T> R>
572- // constexpr void append_range(R&& rg);
573- // constexpr void pop_back();
574-
575- // template<class... Args>
576- // constexpr T* try_emplace_back(Args&&... args);
577- // constexpr T* try_push_back(const T& value);
578- // constexpr T* try_push_back(T&& value);
579-
580- // template<class... Args>
581- // constexpr T& unchecked_emplace_back(Args&&... args);
582- // constexpr T& unchecked_push_back(const T& value);
583- // constexpr T& unchecked_push_back(T&& value);
584-
585- // template <class... Args>
586- // constexpr iterator emplace(const_iterator position, Args&&... args);
587- // constexpr iterator insert(const_iterator position, const T& x);
588- // constexpr iterator insert(const_iterator position, T&& x);
589- // constexpr iterator insert(const_iterator position, size_type n, const
590- // T& x);
591- // template <class InputIterator>
592- // constexpr iterator insert(const_iterator position, InputIterator
593- // first, InputIterator last);
594- // template<details::inplace_vector::container_compatible_range<T> R>
595- // constexpr iterator insert_range(const_iterator position, R&& rg);
596- // constexpr iterator insert(const_iterator position,
597- // std::initializer_list<T>
598- // il); constexpr iterator erase(const_iterator position); constexpr
599- // iterator erase(const_iterator first, const_iterator last); constexpr
600- // void swap(inplace_vector& x)
601- // noexcept(N == 0 || (std::is_nothrow_swappable_v<T> &&
602- // std::is_nothrow_move_constructible_v<T>));
603- // constexpr void clear() noexcept;
604-
605539 constexpr friend bool operator ==(const inplace_vector &x,
606540 const inplace_vector &y) {
607541 return x.size () == y.size () && std::ranges::equal (x, y);
@@ -615,12 +549,14 @@ struct inplace_vector
615549 }
616550
617551private: // Utilities
618- constexpr void assert_iterator_in_range (const_iterator it) noexcept {
552+ constexpr void
553+ assert_iterator_in_range ([[maybe_unused]] const_iterator it) noexcept {
619554 IV_EXPECT (begin () <= it && " iterator not in range" );
620555 IV_EXPECT (it <= end () && " iterator not in range" );
621556 }
622- constexpr void assert_valid_iterator_pair (const_iterator first,
623- const_iterator last) noexcept {
557+ constexpr void
558+ assert_valid_iterator_pair ([[maybe_unused]] const_iterator first,
559+ [[maybe_unused]] const_iterator last) noexcept {
624560 IV_EXPECT (first <= last && " invalid iterator pair" );
625561 }
626562 constexpr void assert_iterator_pair_in_range (const_iterator first,
@@ -1044,3 +980,5 @@ constexpr std::size_t erase_if(inplace_vector<T, N> &c, Predicate pred) {
1044980} // namespace beman
1045981
1046982#undef IV_EXPECT
983+
984+ #endif // BEMAN_INPLACE_VECTOR_INPLACE_VECTOR_HPP
0 commit comments