https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97612
--- Comment #2 from martin <mscfd at gmx dot net> --- I do not see why it should not be valid. t() is a structure constructor acting much like a function with (in this case) one optional argument. And as an allocatable component has default initialisation, no value needs to be provided, to be valid constructor. Just to be sure I checked Metcalf (2011). Section 15.3 "Structure constructors" and 20.1.4 "Structure constructors" contain an interesting piece of information I did not know about: F03 forgot to allow that for allocatable components a value can be omitted. This was permitted in F08. So it looks like the provided code example is not valid F03 but valid F08. In fact, null() can be provided as default value. Then the code compiles: type(t) :: a = t(null())