(j3.2006) (SC22WG5.3783) Response on the TR29113 draft N1761
Aleksandar Donev
donev1 at llnl.gov
Tue Dec 9 01:40:39 EST 2008
Reinhold Bader wrote:
> I intuitively
> followed the otherwise valid
> rule that a CLASS(x) actual cannot ever be matched do a TYPE(x) dummy in
> formulating my issue.
Except that "*" is not "x", it is a special case, even for CLASS(*) vs
CLASS(t) in F03. The rule you quote has a very specific purpose, namely,
safely. You don't want to allow the programmer to pass an apple to
something that expects a cow and never get a compile or run-time error
message. If he/she were sure it was an apple, we do allow them to do:
select type(x)
class is(apple)
call sub(x) ! Safe
class default
stop "i want an apple!"
end select
In the case of a TYPE(*) dummy, I see nothing that can go wrong when the
actual is CLASS(*). TYPE(*) is like CLASS(*) [it could be of any type]
except that a type descriptor is not passed. So one certainly could not
pass a TYPE(*) actual to a CLASS(*) dummy, but the reverse seems
perfectly fine and useful to me.
> And the implications of allowing polymorphism here still make me squirm
> because of
> unintended side effects like having a TYPE(*), VOLATILE dummy and
> coaxing the external
> mechanism into changing the type of this object from outside :-)
I will take the smiley face to indicate a joke and not some real fear of
the impossible.
Aleks
More information about the J3
mailing list