From Jason Turner

[over.match.ref]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp3c0yvl9a/{from.md → to.md} +11 -9
tmp/tmp3c0yvl9a/{from.md → to.md} RENAMED
@@ -2,27 +2,29 @@
2
 
3
  Under the conditions specified in  [[dcl.init.ref]], a reference can be
4
  bound directly to a glvalue or class prvalue that is the result of
5
  applying a conversion function to an initializer expression. Overload
6
  resolution is used to select the conversion function to be invoked.
7
- Assuming that “*cv1* `T`” is the underlying type of the reference being
8
- initialized, and “*cv* `S`” is the type of the initializer expression,
9
- with `S` a class type, the candidate functions are selected as follows:
 
10
 
11
  - The conversion functions of `S` and its base classes are considered.
12
  Those non-explicit conversion functions that are not hidden within `S`
13
  and yield type “lvalue reference to *cv2* `T2`” (when initializing an
14
- lvalue reference or an rvalue reference to function) or “ `T2`” or
15
- “rvalue reference to `T2`” (when initializing an rvalue reference or
16
- an lvalue reference to function), where “*cv1* `T`” is
17
  reference-compatible ([[dcl.init.ref]]) with “*cv2* `T2`”, are
18
  candidate functions. For direct-initialization, those explicit
19
  conversion functions that are not hidden within `S` and yield type
20
  “lvalue reference to *cv2* `T2`” or “*cv2* `T2`” or “rvalue reference
21
- to *cv2* `T2`,” respectively, where `T2` is the same type as `T` or
22
  can be converted to type `T` with a qualification conversion (
23
  [[conv.qual]]), are also candidate functions.
24
 
25
  The argument list has one argument, which is the initializer expression.
26
- This argument will be compared against the implicit object parameter of
27
- the conversion functions.
 
28
 
 
2
 
3
  Under the conditions specified in  [[dcl.init.ref]], a reference can be
4
  bound directly to a glvalue or class prvalue that is the result of
5
  applying a conversion function to an initializer expression. Overload
6
  resolution is used to select the conversion function to be invoked.
7
+ Assuming that “reference to *cv1* `T`” is the type of the reference
8
+ being initialized, and “cv `S`” is the type of the initializer
9
+ expression, with `S` a class type, the candidate functions are selected
10
+ as follows:
11
 
12
  - The conversion functions of `S` and its base classes are considered.
13
  Those non-explicit conversion functions that are not hidden within `S`
14
  and yield type “lvalue reference to *cv2* `T2`” (when initializing an
15
+ lvalue reference or an rvalue reference to function) or “*cv2* `T2`”
16
+ or “rvalue reference to *cv2* `T2`” (when initializing an rvalue
17
+ reference or an lvalue reference to function), where “*cv1* `T`” is
18
  reference-compatible ([[dcl.init.ref]]) with “*cv2* `T2`”, are
19
  candidate functions. For direct-initialization, those explicit
20
  conversion functions that are not hidden within `S` and yield type
21
  “lvalue reference to *cv2* `T2`” or “*cv2* `T2`” or “rvalue reference
22
+ to *cv2* `T2`”, respectively, where `T2` is the same type as `T` or
23
  can be converted to type `T` with a qualification conversion (
24
  [[conv.qual]]), are also candidate functions.
25
 
26
  The argument list has one argument, which is the initializer expression.
27
+
28
+ [*Note 1*: This argument will be compared against the implicit object
29
+ parameter of the conversion functions. — *end note*]
30