https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61275

--- Comment #7 from vehre at gcc dot gnu.org ---
First sentence of F2008, 7.1.12 is:

   A constant expression is an expression with limitations that make it 
   suitable for use as a kind type parameter, *initializer*, or named 
   constant. It is an expression in which each operation is intrinsic,
   and each primary is ...

With Type(T) :: TestObj = T(...) the T after the assign becomes an initializer,
which 7.1.12 states only constant expressions are suitable for. In this
constant expression each structure constructor has to adhere to the conditions
of (3):

   a structure constructor where each component-spec corresponding to
     (a) an allocatable component is a reference to the intrinsic function
NULL,
     (b) ...

Now that S is an allocatable component of T. I think this the only valid
expression for that is NULL() as initializer. This is what gfortran does
currently and this is how I interpret the standard.

Btw, cosmomc compiles fine, so it can't be using this specific construct.

Reply via email to