From Jason Turner

[unique.ptr.special]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp5cqrwjm9/{from.md → to.md} +16 -7
tmp/tmp5cqrwjm9/{from.md → to.md} RENAMED
@@ -2,10 +2,13 @@
2
 
3
  ``` cpp
4
  template <class T, class D> void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept;
5
  ```
6
 
 
 
 
7
  *Effects:* Calls `x.swap(y)`.
8
 
9
  ``` cpp
10
  template <class T1, class D1, class T2, class D2>
11
  bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
@@ -23,20 +26,26 @@ template <class T1, class D1, class T2, class D2>
23
  ``` cpp
24
  template <class T1, class D1, class T2, class D2>
25
  bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
26
  ```
27
 
28
- *Requires:* Let `CT` be `common_type<unique_ptr<T1, D1>::pointer,`
29
- `unique_ptr<T2, D2>::pointer>::type`. Then the specialization `less<CT>`
30
- shall be a function object type ([[function.objects]]) that induces a
31
- strict weak ordering ([[alg.sorting]]) on the pointer values.
32
 
33
- *Returns:* `less<CT>()(x.get(), y.get()).`
 
 
 
 
 
 
 
 
 
34
 
35
  *Remarks:* If `unique_ptr<T1, D1>::pointer` is not implicitly
36
- convertible to `CT` or `unique_ptr<T2, D2>::pointer` is not implicitly
37
- convertible to `CT`, the program is ill-formed.
38
 
39
  ``` cpp
40
  template <class T1, class D1, class T2, class D2>
41
  bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
42
  ```
 
2
 
3
  ``` cpp
4
  template <class T, class D> void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept;
5
  ```
6
 
7
+ *Remarks:* This function shall not participate in overload resolution
8
+ unless `is_swappable_v<D>` is `true`.
9
+
10
  *Effects:* Calls `x.swap(y)`.
11
 
12
  ``` cpp
13
  template <class T1, class D1, class T2, class D2>
14
  bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
 
26
  ``` cpp
27
  template <class T1, class D1, class T2, class D2>
28
  bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
29
  ```
30
 
31
+ *Requires:* Let *`CT`* denote
 
 
 
32
 
33
+ ``` cpp
34
+ common_type_t<typename unique_ptr<T1, D1>::pointer,
35
+ typename unique_ptr<T2, D2>::pointer>
36
+ ```
37
+
38
+ Then the specialization `less<`*`CT`*`>` shall be a function object
39
+ type ([[function.objects]]) that induces a strict weak
40
+ ordering ([[alg.sorting]]) on the pointer values.
41
+
42
+ *Returns:* `less<`*`CT`*`>()(x.get(), y.get())`.
43
 
44
  *Remarks:* If `unique_ptr<T1, D1>::pointer` is not implicitly
45
+ convertible to *`CT`* or `unique_ptr<T2, D2>::pointer` is not implicitly
46
+ convertible to *`CT`*, the program is ill-formed.
47
 
48
  ``` cpp
49
  template <class T1, class D1, class T2, class D2>
50
  bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y);
51
  ```