> -----Original Message-----
> From: Team Ada: Ada Advocacy Issues (83 & 95)
> [mailto:[log in to unmask]]On Behalf Of Ed Colbert
> Sent: Monday, November 26, 2001 4:32 PM
> To: [log in to unmask]
> Subject: FW: Dispatching Example
> Hi All,
> About 3 months I posted a question on comp.lang.ada. Tucker responded.
> I posted some follow up questions, but never saw a response. I hope
> that Tucker or someone on this mail list might be able to answer my
> Why is the expression ambiguous?
Because Is_Item is overloaded and each one is an "acceptable interpretation"
> Isn't the tag of C, which in this
> case is compile time determinable, used to resolve the call to Is_Item
> per 5.2(9)?
> I suppose it could be ambiguous if the expression is evaluated first
> as allowed by 5.2(7); but then when would 5.2(8-10) apply?
That doesn't make sense -- there's no expression to evaluate (at run time)
because the construct is illegal.
> Clearly, something is confusing Richard & I.
It sounds as though you're confusing overload resolution with the
determination of the controlling tag.
Overload resolution determines which operation is denoted by the call.
The controlling tag determines which subprogram_body is executed for that
The way it goes is that the overloading rules are applied, then the
non-overloading rules. You have to have exactly one acceptable
interpretation for a construct. If you make it that far, then you get to
find out if that interpretation is legal (with respect to the
non-overloading rules). The way it *doesn't* work is, "exactly one legal
Hope this helps,