To: WG5 08-303
From: Michael Ingrassia
Subject: Reply to request for TYPE_IS_EXTENSIBLE
Date: 2008 November 20
References: 08-254r2
In public comment a request was made by multiple parties
for a TYPE_IS_EXTENSIBLE intrinsic.
A library designer who does not know what types the user
will impose upon his interface might want improved control
over user input, which may come from a source external
to the program, when using unlimited polymorphic objects
together with SAME_TYPE_AS() or EXTENDS_TYPE_OF().
The committee suggests that the SELECT TYPE construct may
provide a useful way to supply such improved control. SELECT
TYPE permits designing different cases for different extensible
types, in which case the default case can supply processing for
the non-extensible types. It will not be possible to distinguish
between different non-extensible derived types in this way;
however, that would not be possible with a TYPE_IS_EXTENSIBLE
intrinsic either so the committee presumes that this is not
requested functionality.
The behavior of EXTENDS_TYPE_OF and SAME_TYPE_AS when applied to
unlimited polymorphic entities has been clarified to allow those
to be used even when the dynamic type of the arguments is not
extensible.