Date
2022-11-17.00:42:33
Message id
13077

Content

Proposed resolution:

This wording is relative to N4917.

  1. Modify [vector.bool.pspc], partial class template vector<bool, Allocator> synopsis, as indicated:

    namespace std {
      template<class Allocator>
      class vector<bool, Allocator> {
      public:
        […]
        // construct/copy/destroy
        constexpr vector() noexcept(noexcept(Allocator())) : vector(Allocator()) { }
        constexpr explicit vector(const Allocator&) noexcept;
        constexpr explicit vector(size_type n, const Allocator& = Allocator());
        constexpr vector(size_type n, const bool& value, const Allocator& = Allocator());
        template<class InputIterator>
          constexpr vector(InputIterator first, InputIterator last, const Allocator& = Allocator());
        template<container-compatible-range <bool> R>
          constexpr vector(from_range_t, R&& rg, const Allocator& = Allocator());
        constexpr vector(const vector& x);
        constexpr vector(vector&& x) noexcept;
        constexpr vector(const vector&, const type_identity_t<Allocator>&);
        constexpr vector(vector&&, const type_identity_t<Allocator>&);
        constexpr vector(initializer_list<bool>, const Allocator& = Allocator());
        constexpr ~vector();
        constexpr vector& operator=(const vector& x);
        constexpr vector& operator=(vector&& x)
          noexcept(allocator_traits<Allocator>::propagate_on_container_move_assignment::value ||
                   allocator_traits<Allocator>::is_always_equal::value);
        constexpr vector& operator=(initializer_list<bool>);
        template<class InputIterator>
          constexpr void assign(InputIterator first, InputIterator last);
        template<container-compatible-range <bool> R>
          constexpr void assign_range(R&& rg);
        constexpr void assign(size_type n, const bool& t);
        constexpr void assign(initializer_list<bool>);
        constexpr allocator_type get_allocator() const noexcept;
      
        […]
        constexpr iterator erase(const_iterator position);
        constexpr iterator erase(const_iterator first, const_iterator last);
        constexpr void swap(vector&)
          noexcept(allocator_traits<Allocator>::propagate_on_container_swap::value ||
                   allocator_traits<Allocator>::is_always_equal::value);
        constexpr static void swap(reference x, reference y) noexcept;
        constexpr void flip() noexcept; // flips all bits
        constexpr void clear() noexcept;
      };
    }