From Jason Turner

[expected.object.cons]

Diff to HTML by rtfpessoa

tmp/tmpmiwj5vzg/{from.md → to.md} RENAMED
@@ -101,18 +101,19 @@ with `std::forward<GF>(rhs.error())`.
101
 
102
  *Remarks:* The expression inside `explicit` is equivalent to
103
  `!is_convertible_v<UF, T> || !is_convertible_v<GF, E>`.
104
 
105
  ``` cpp
106
- template<class U = T>
107
  constexpr explicit(!is_convertible_v<U, T>) expected(U&& v);
108
  ```
109
 
110
  *Constraints:*
111
 
112
  - `is_same_v<remove_cvref_t<U>, in_place_t>` is `false`; and
113
- - `is_same_v<expected, remove_cvref_t<U>>` is `false`; and
 
114
  - `remove_cvref_t<U>` is not a specialization of `unexpected`; and
115
  - `is_constructible_v<T, U>` is `true`; and
116
  - if `T` is cv `bool`, `remove_cvref_t<U>` is not a specialization of
117
  `expected`.
118
 
 
101
 
102
  *Remarks:* The expression inside `explicit` is equivalent to
103
  `!is_convertible_v<UF, T> || !is_convertible_v<GF, E>`.
104
 
105
  ``` cpp
106
+ template<class U = remove_cv_t<T>>
107
  constexpr explicit(!is_convertible_v<U, T>) expected(U&& v);
108
  ```
109
 
110
  *Constraints:*
111
 
112
  - `is_same_v<remove_cvref_t<U>, in_place_t>` is `false`; and
113
+ - `is_same_v<remove_cvref_t<U>, expected>` is `false`; and
114
+ - `is_same_v<remove_cvref_t<U>, unexpect_t>` is `false`; and
115
  - `remove_cvref_t<U>` is not a specialization of `unexpected`; and
116
  - `is_constructible_v<T, U>` is `true`; and
117
  - if `T` is cv `bool`, `remove_cvref_t<U>` is not a specialization of
118
  `expected`.
119