#
constexpr explicit filter_view(V base, Pred pred);
constexpr const Pred& pred() const;
constexpr iterator begin();
constexpr iterator(filter_view& parent, iterator_t<V> current);
constexpr const iterator_t<V>& base() const & noexcept;
constexpr iterator_t<V> base() &&;
constexpr range_reference_t<V> operator*() const;
constexpr iterator& operator+();
constexpr void operator+(int);
constexpr iterator operator+(int) requires forward_range<V>;
constexpr iterator& operator-() requires bidirectional_range<V>;
constexpr iterator operator-(int) requires bidirectional_range<V>;
friend constexpr bool operator=(const iterator& x, const iterator& y)
requires equality_comparable<iterator_t<V>>;
friend constexpr range_rvalue_reference_t<V> iter_move(const iterator& i)
noexcept(noexcept(ranges::iter_move(i.current_);
friend constexpr void iter_swap(const iterator& x, const iterator& y)
noexcept(noexcept(ranges::iter_swap(x.current_, y.current_)
requires indirectly_swappable<iterator_t<V>>;
constexpr explicit sentinel(filter_view& parent);