From Jason Turner

[over.match.ref]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpynfjsz12/{from.md → to.md} +13 -8
tmp/tmpynfjsz12/{from.md → to.md} RENAMED
@@ -6,18 +6,23 @@ 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
- except that for copy-initialization, only the non-explicit conversion
13
- functions are considered. Those that are not hidden within `S` and
14
- yield type “lvalue reference to *cv2* `T2`” (when [[dcl.init.ref]]
15
- requires an lvalue result) or “ `T2`” or rvalue reference to `T2`”
16
- (when [[dcl.init.ref]] requires an rvalue result), where “*cv1* `T`”
17
- is reference-compatible ([[dcl.init.ref]]) with “*cv2* `T2`”, are
18
- candidate functions.
 
 
 
 
 
19
 
20
  The argument list has one argument, which is the initializer expression.
21
  This argument will be compared against the implicit object parameter of
22
  the conversion functions.
23
 
 
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