From Jason Turner

[range.single.view]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpw7b9ye25/{from.md → to.md} +12 -7
tmp/tmpw7b9ye25/{from.md → to.md} RENAMED
@@ -1,35 +1,39 @@
1
  #### Class template `single_view` <a id="range.single.view">[[range.single.view]]</a>
2
 
3
  ``` cpp
4
  namespace std::ranges {
5
- template<copy_constructible T>
6
  requires is_object_v<T>
7
  class single_view : public view_interface<single_view<T>> {
8
  private:
9
- semiregular-box<T> value_; // exposition only{} (see [range.semi.wrap])
 
10
  public:
11
- single_view() = default;
12
- constexpr explicit single_view(const T& t);
13
  constexpr explicit single_view(T&& t);
14
  template<class... Args>
15
  requires constructible_from<T, Args...>
16
- constexpr single_view(in_place_t, Args&&... args);
17
 
18
  constexpr T* begin() noexcept;
19
  constexpr const T* begin() const noexcept;
20
  constexpr T* end() noexcept;
21
  constexpr const T* end() const noexcept;
22
  static constexpr size_t size() noexcept;
23
  constexpr T* data() noexcept;
24
  constexpr const T* data() const noexcept;
25
  };
 
 
 
26
  }
27
  ```
28
 
29
  ``` cpp
30
- constexpr explicit single_view(const T& t);
31
  ```
32
 
33
  *Effects:* Initializes *value\_* with `t`.
34
 
35
  ``` cpp
@@ -38,11 +42,12 @@ constexpr explicit single_view(T&& t);
38
 
39
  *Effects:* Initializes *value\_* with `std::move(t)`.
40
 
41
  ``` cpp
42
  template<class... Args>
43
- constexpr single_view(in_place_t, Args&&... args);
 
44
  ```
45
 
46
  *Effects:* Initializes *value\_* as if by
47
  *`value_`*`{in_place, std::forward<Args>(args)...}`.
48
 
 
1
  #### Class template `single_view` <a id="range.single.view">[[range.single.view]]</a>
2
 
3
  ``` cpp
4
  namespace std::ranges {
5
+ template<move_constructible T>
6
  requires is_object_v<T>
7
  class single_view : public view_interface<single_view<T>> {
8
  private:
9
+ movable-box<T> value_; // exposition only{} (see [range.move.wrap])
10
+
11
  public:
12
+ single_view() requires default_initializable<T> = default;
13
+ constexpr explicit single_view(const T& t) requires copy_constructible<T>;
14
  constexpr explicit single_view(T&& t);
15
  template<class... Args>
16
  requires constructible_from<T, Args...>
17
+ constexpr explicit single_view(in_place_t, Args&&... args);
18
 
19
  constexpr T* begin() noexcept;
20
  constexpr const T* begin() const noexcept;
21
  constexpr T* end() noexcept;
22
  constexpr const T* end() const noexcept;
23
  static constexpr size_t size() noexcept;
24
  constexpr T* data() noexcept;
25
  constexpr const T* data() const noexcept;
26
  };
27
+
28
+ template<class T>
29
+ single_view(T) -> single_view<T>;
30
  }
31
  ```
32
 
33
  ``` cpp
34
+ constexpr explicit single_view(const T& t) requires copy_constructible<T>;
35
  ```
36
 
37
  *Effects:* Initializes *value\_* with `t`.
38
 
39
  ``` cpp
 
42
 
43
  *Effects:* Initializes *value\_* with `std::move(t)`.
44
 
45
  ``` cpp
46
  template<class... Args>
47
+ requires constructible_from<T, Args...>
48
+ constexpr explicit single_view(in_place_t, Args&&... args);
49
  ```
50
 
51
  *Effects:* Initializes *value\_* as if by
52
  *`value_`*`{in_place, std::forward<Args>(args)...}`.
53