FreeBSD Manual Pages
std::ranges::owning_view(3) C++ Standard Libary std::ranges::owning_view(3) NAME std::ranges::owning_view - std::ranges::owning_view Synopsis Defined in header <ranges> template< ranges::range R > requires std::movable<R> && (!/*is-initializer-list*/<R>) (since C++20) class owning_view : public ranges::view_interface<owning_view<R>> owning_view is a view that has unique ownership of a range. It is move-only and stores that range within it. The constant /*is-initializer-list*/<R> in the requires-clause is true if and only if std::remove_cvref_t<R> is a specialization of std::initial- izer_list. Member functions constructor constructs an owning_view by value-initializing or move-constructing (C++20) the stored range (public member function) operator= move-assigns the stored range (C++20) (public member function) base returns a reference to the stored range (C++20) (public member function) begin returns the beginning iterator of the stored range (C++20) (public member function) end returns the sentinel of the stored range (C++20) (public member function) empty checks whether the stored range is empty (C++20) (public member function) size returns the size of the stored sized_range (C++20) (public member function) data returns the pointer to the beginning of the stored contiguous_range (C++20) (public member function) Inherited from std::ranges::view_interface cbegin returns a constant iterator to the beginning of the range. (C++23) (public member function of std::ranges::view_inter- face<D>) cend returns a sentinel for the constant iterator of the range. (C++23) (public member function of std::ranges::view_inter- face<D>) operator bool returns whether the derived view is not empty. Pro- vided if (C++20) ranges::empty is applicable to it. (public member function of std::ranges::view_inter- face<D>) front returns the first element in the derived view. Pro- vided if it (C++20) satisfies forward_range. (public member function of std::ranges::view_inter- face<D>) back returns the last element in the derived view. Provided if it satisfies (C++20) bidirectional_range and common_range. (public member function of std::ranges::view_inter- face<D>) operator[] returns the n^th element in the derived view. Provided if it satisfies (C++20) random_access_range. (public member function of std::ranges::view_inter- face<D>) std::ranges::owning_view::owning_view owning_view() requires std::default_initializable<R> = default; (1) (since C++20) owning_view( owning_view&& other ) = default; (2) (since C++20) constexpr owning_view( R&& t ); (3) (since C++20) owning_view( const owning_view& ) = delete; (4) (since C++20) 1) Default constructor. Value-initializes the stored range by its default member initializer (= R()). 2) Move constructor. Move constructs the stored range from that of other. 3) Move constructs the stored range from t. 4) Copy constructor is deleted. owning_view is move-only. Parameters other - another owning_view to move from t - range to move from std::ranges::owning_view::operator= owning_view& operator=( owning_view&& other ) = default; (1) (since C++20) owning_view& operator=( const owning_view& ) = delete; (2) (since C++20) 1) Move assignment operator. Move assigns the stored range from that of other. 2) Copy assignment operator is deleted. owning_view is move-only. Parameters other - another owning_view to move from Return value *this std::ranges::owning_view::base constexpr R& base() & noexcept; (1) (since C++20) constexpr const R& base() const & noexcept; (2) (since C++20) constexpr R&& base() && noexcept; (3) (since C++20) constexpr const R&& base() const && noexcept; (4) (since C++20) Returns a reference to the stored range, keeping value category and const-qualification. 1,2) Equivalent to return r_;. 3,4) Equivalent to return std::move(r_);. std::ranges::owning_view::begin constexpr ranges::iterator_t<R> begin(); (1) (since C++20) constexpr auto begin() const requires ranges::range<const R>; (2) (since C++20) Equivalent to return ranges::begin(r_);. std::ranges::owning_view::end constexpr ranges::sentinel_t<R> end(); (1) (since C++20) constexpr auto end() const requires ranges::range<const R>; (2) (since C++20) Equivalent to return ranges::end(r_);. std::ranges::owning_view::empty constexpr bool empty() requires requires { ranges::empty(r_); }; (1) (since C++20) constexpr bool empty() const requires requires { (2) (since C++20) ranges::empty(r_); }; Equivalent to return ranges::empty(r_);. std::ranges::owning_view::size constexpr auto size() requires ranges::sized_range<R>; (1) (since C++20) constexpr auto size() const requires ranges::sized_range<const R>; (2) (since C++20) Equivalent to return ranges::size(r_);. std::ranges::owning_view::data constexpr auto data() requires ranges::contiguous_range<R>; (1) (since C++20) constexpr auto data() const requires (2) (since C++20) ranges::contiguous_range<const R>; Equivalent to return ranges::data(r_);. Helper templates template< class T > inline constexpr bool (since C++20) enable_borrowed_range<std::ranges::owning_view<T>> = std::ranges::enable_borrowed_range<T>; This specialization of std::ranges::enable_borrowed_range makes own- ing_view satisfy borrowed_range when the underlying range satisfies it. Example // Run this code #include <cassert> #include <iostream> #include <ranges> #include <string> int main() { using namespace std::literals; std::ranges::owning_view ov{"cosmos"s}; // the deduced type of R is std::string; // `ov` is the only owner of this string assert( ov.empty() == false && ov.size() == 6 && ov.size() == ov.base().size() && ov.front() == 'c' && ov.front() == *ov.begin() && ov.back() == 's' && ov.back() == *(ov.end() - 1) && ov.data() == ov.base() ); std::cout << "sizeof(ov): " << sizeof ov << '\n' // typically equal to sizeof(R) << "range-for: "; for (const char ch : ov) std::cout << ch; std::cout << '\n'; std::ranges::owning_view<std::string> ov2; assert(ov2.empty()); // ov2 = ov; // compile-time error: copy assignment operator is deleted ov2 = std::move(ov); // OK assert(ov2.size() == 6); } Possible output: sizeof(ov): 32 range-for: cosmos See also ranges::ref_view a view of the elements of some other range (C++20) (class template) views::all_t a view that includes all elements of a range views::all (alias template) (range adaptor object) (C++20) http://cppreference.com 2024.06.10 std::ranges::owning_view(3)
NAME | Synopsis | Member functions | Parameters | Parameters | Return value | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ranges::owning_view&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
