From Jason Turner

[over.match.copy]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpn2tscli6/{from.md → to.md} +10 -14
tmp/tmpn2tscli6/{from.md → to.md} RENAMED
@@ -14,25 +14,21 @@ Assuming that “*cv1* `T`” is the type of the object being initialized,
14
  with `T` a class type, the candidate functions are selected as follows:
15
 
16
  - The converting constructors [[class.conv.ctor]] of `T` are candidate
17
  functions.
18
  - When the type of the initializer expression is a class type “cv `S`”,
19
- the non-explicit conversion functions of `S` and its base classes are
20
- considered. When initializing a temporary object [[class.mem]] to be
21
- bound to the first parameter of a constructor where the parameter is
22
- of type “reference to *cv2* `T`” and the constructor is called with a
23
- single argument in the context of direct-initialization of an object
24
- of type “*cv3* `T`”, explicit conversion functions are also
25
- considered. Those that are not hidden within `S` and yield a type
26
- whose cv-unqualified version is the same type as `T` or is a derived
27
- class thereof are candidate functions. A call to a conversion function
28
- returning “reference to `X`” is a glvalue of type `X`, and such a
29
- conversion function is therefore considered to yield `X` for this
30
- process of selecting candidate functions.
31
 
32
  In both cases, the argument list has one argument, which is the
33
  initializer expression.
34
 
35
  [*Note 2*: This argument will be compared against the first parameter
36
- of the constructors and against the implicit object parameter of the
37
- conversion functions. — *end note*]
38
 
 
14
  with `T` a class type, the candidate functions are selected as follows:
15
 
16
  - The converting constructors [[class.conv.ctor]] of `T` are candidate
17
  functions.
18
  - When the type of the initializer expression is a class type “cv `S`”,
19
+ conversion functions are considered. The permissible types for
20
+ non-explicit conversion functions are `T` and any class derived from
21
+ `T`. When initializing a temporary object [[class.mem]] to be bound to
22
+ the first parameter of a constructor where the parameter is of type
23
+ “reference to *cv2* `T`” and the constructor is called with a single
24
+ argument in the context of direct-initialization of an object of type
25
+ “*cv3* `T`”, the permissible types for explicit conversion functions
26
+ are the same; otherwise there are none.
 
 
 
 
27
 
28
  In both cases, the argument list has one argument, which is the
29
  initializer expression.
30
 
31
  [*Note 2*: This argument will be compared against the first parameter
32
+ of the constructors and against the object parameter of the conversion
33
+ functions. — *end note*]
34