On 4/28/11 8:24 AM, Neil Carlson wrote:
> On Wed, Apr 27, 2011 at 9:03 PM, Jim Xia<[log in to unmask]> wrote:
>> I don't see how 12.5.2.7p2 contradicts 12.5.2.5. 12.5.2.5 states the rules
>> applied to both POINTER and ALLOCATABLE dummies, and 12.5.2.7 lists further
>> restrictions on POINTER dummies. So you should combine them together to get
>> a full picture.
>>
>> 12.5.2.7p2 states that an actual associated with a poly-pointer dummy could
>> be a target if the dummy has INTENT(IN). That doesn't say the actual could
>> be a non-poly-target (because 12.5.2.5 says you couldn't). The actual arg,
>> in this case, could be a poly dummy arg with TARGET attribute or a poly
>> allocatable with a TARGET attribute.
>
> I have to defer to you compiler people whose job it is to deal with this stuff
> day in and day out. But to me 12.5.2.7p2 is unambiguous in stating that an
> INTENT(IN) polymorphic dummy pointer can be associated with a non-pointer
> actual if it would be a valid target of the pointer. There's no indication or
Bill Long replied:
>Standards use strict meanings for words like "shall" and "can". "Can"
>indicates a capability, and that is the meaning you are using in the above
>argument. But the cited part of the standard does not use "can". "Shall"
>indicates a requirement that has to be satisfied for the program to be
>standard-conforming. Obeying all of the "shall" statements is necessary, even
>if they are not in the same paragraph. So, in fact, Jim's analysis is correct.
I agree that that is what the words in the standard say, but I am sure it is not
what we intended. The polymorphism-matching requirement is pointless in the
pointer/target case. This certainly bears further investigation.
Cheers,
--
................................Malcolm Cohen, Nihon NAG, Tokyo.
|