https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105243
--- Comment #7 from anlauf at gcc dot gnu.org --- (In reply to Steve Kargl from comment #6) > > I quoted the F2018 standard constraint. > > > > C708 An entity declared with the CLASS keyword shall be a dummy > > argument or have the ALLOCATABLE or POINTER attribute. > > > > class(t), parameter :: y > > > > would seem to be missing all of the three listed attributes. You're right here. > I'll also add > > 7.3.2.3 CLASS type specifier > > The CLASS type specifier is used to declare polymorphic entities. > A polymorphic entity is a data entity that is able to be of differing > dynamic types during program execution. > > Does is make sense to given a named constant the polymorphic property? Well, I could imagine named constants that do not have a type (e.g. when using CLASS(*)), as well as named constants that refer to an extensible type. The F2023 draft even has CLASSOF. Where will this finally lead... I think I should ask the Intel people why their compiler accepts program p type t integer :: i = 1 end type t type(t), parameter :: a = t() ! Legal class(t), parameter :: b = t() ! Likely not class(*), parameter :: c = t() ! ... class(*), parameter :: d = 1 ! ... end