There is no multi-step user-defined implicit conversion.
int -> bool -> A
is allowed because the int->bool
conversion isn’t user-defined.
12.3 Conversions [class.conv]
1 Type conversions of class objects can be specified by constructors
and by conversion functions. These conversions are called user-defined
conversions and are used for implicit type conversions (clause 4), for
initialization (8.5), and for explicit type conversions (5.4, 5.2.9).2 User-defined conversions are applied only where they are unambiguous
(10.2, 12.3.2). Conversions obey the access control rules (clause 11).
Access control is applied after ambiguity resolution (3.4).3 [ Note:
See 13.3 for a discussion of the use of conversions in function calls
as well as examples below. —end note ]4 At most one user-defined
conversion (constructor or conversion function) is implicitly applied
to a single value.