Files
2025-10-25 03:02:53 +03:00

107 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[range.single.view]
# 25 Ranges library [[ranges]](./#ranges)
## 25.6 Range factories [[range.factories]](range.factories#range.single.view)
### 25.6.3 Single view [[range.single]](range.single#view)
#### 25.6.3.2 Class template single_view [range.single.view]
[🔗](#lib:single_view)
namespace std::ranges {template<[move_constructible](concept.moveconstructible#concept:move_constructible "18.4.13Concept move_­constructible[concept.moveconstructible]") T>requires is_object_v<T>class single_view : public view_interface<single_view<T>> {private:*movable-box*<T> *value_*; // *exposition only* (see [[range.move.wrap]](range.move.wrap "25.7.3Movable wrapper"))public: single_view() requires [default_initializable](concept.default.init#concept:default_initializable "18.4.12Concept default_­initializable[concept.default.init]")<T> = default; constexpr explicit single_view(const T& t) requires [copy_constructible](concept.copyconstructible#concept:copy_constructible "18.4.14Concept copy_­constructible[concept.copyconstructible]")<T>; constexpr explicit single_view(T&& t); template<class... Args>requires [constructible_from](concept.constructible#concept:constructible_from "18.4.11Concept constructible_­from[concept.constructible]")<T, Args...>constexpr explicit single_view(in_place_t, Args&&... args); constexpr T* begin() noexcept; constexpr const T* begin() const noexcept; constexpr T* end() noexcept; constexpr const T* end() const noexcept; static constexpr bool empty() noexcept; static constexpr size_t size() noexcept; constexpr T* data() noexcept; constexpr const T* data() const noexcept; }; template<class T> single_view(T) -> single_view<T>;}
[🔗](#lib:single_view,constructor)
`constexpr explicit single_view(const T& t) requires [copy_constructible](concept.copyconstructible#concept:copy_constructible "18.4.14Concept copy_­constructible[concept.copyconstructible]")<T>;
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2686)
*Effects*: Initializes *value_* with t[.](#1.sentence-1)
[🔗](#lib:single_view,constructor_)
`constexpr explicit single_view(T&& t);
`
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2697)
*Effects*: Initializes *value_* with std::move(t)[.](#2.sentence-1)
[🔗](#lib:single_view,constructor__)
`template<class... Args>
requires [constructible_from](concept.constructible#concept:constructible_from "18.4.11Concept constructible_­from[concept.constructible]")<T, Args...>
constexpr explicit single_view(in_place_t, Args&&... args);
`
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2710)
*Effects*: Initializes *value_* as if by*value_*{in_place, std::forward<Args>(args)...}[.](#3.sentence-1)
[🔗](#lib:begin,single_view)
`constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;
`
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2723)
*Effects*: Equivalent to: return data();
[🔗](#lib:end,single_view)
`constexpr T* end() noexcept;
constexpr const T* end() const noexcept;
`
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2735)
*Effects*: Equivalent to: return data() + 1;
[🔗](#lib:empty,single_view)
`static constexpr bool empty() noexcept;
`
[6](#6)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2746)
*Effects*: Equivalent to: return false;
[🔗](#lib:size,single_view)
`static constexpr size_t size() noexcept;
`
[7](#7)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2757)
*Effects*: Equivalent to: return 1;
[🔗](#lib:data,single_view)
`constexpr T* data() noexcept;
constexpr const T* data() const noexcept;
`
[8](#8)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/ranges.tex#L2769)
*Effects*: Equivalent to: return *value_*.operator->();