From Jason Turner

[optional.syn]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp1lb0wf79/{from.md → to.md} +14 -2
tmp/tmp1lb0wf79/{from.md → to.md} RENAMED
@@ -1,14 +1,26 @@
1
  ### Header `<optional>` synopsis <a id="optional.syn">[[optional.syn]]</a>
2
 
3
  ``` cpp
 
4
  #include <compare> // see [compare.syn]
5
 
6
  namespace std {
7
  // [optional.optional], class template optional
8
  template<class T>
9
- class optional;
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  template<class T>
12
  concept is-derived-from-optional = requires(const T& t) { // exposition only
13
  []<class U>(const optional<U>&){ }(t);
14
  };
@@ -63,11 +75,11 @@ namespace std {
63
  // [optional.specalg], specialized algorithms
64
  template<class T>
65
  constexpr void swap(optional<T>&, optional<T>&) noexcept(see below);
66
 
67
  template<class T>
68
- constexpr optional<see below> make_optional(T&&);
69
  template<class T, class... Args>
70
  constexpr optional<T> make_optional(Args&&... args);
71
  template<class T, class U, class... Args>
72
  constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
73
 
 
1
  ### Header `<optional>` synopsis <a id="optional.syn">[[optional.syn]]</a>
2
 
3
  ``` cpp
4
+ // mostly freestanding
5
  #include <compare> // see [compare.syn]
6
 
7
  namespace std {
8
  // [optional.optional], class template optional
9
  template<class T>
10
+ class optional; // partially freestanding
11
+
12
+ // [optional.optional.ref], partial specialization of optional for lvalue reference types
13
+ template<class T>
14
+ class optional<T&>; // partially freestanding
15
+
16
+ template<class T>
17
+ constexpr bool ranges::enable_view<optional<T>> = true;
18
+ template<class T>
19
+ constexpr auto format_kind<optional<T>> = range_format::disabled;
20
+ template<class T>
21
+ constexpr bool ranges::enable_borrowed_range<optional<T&>> = true;
22
 
23
  template<class T>
24
  concept is-derived-from-optional = requires(const T& t) { // exposition only
25
  []<class U>(const optional<U>&){ }(t);
26
  };
 
75
  // [optional.specalg], specialized algorithms
76
  template<class T>
77
  constexpr void swap(optional<T>&, optional<T>&) noexcept(see below);
78
 
79
  template<class T>
80
+ constexpr optional<decay_t<T>> make_optional(T&&);
81
  template<class T, class... Args>
82
  constexpr optional<T> make_optional(Args&&... args);
83
  template<class T, class U, class... Args>
84
  constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
85