How do i allocate an array of strings?

Ok, I’ll define more specifically “first class”: for me it’s “very low barrier to access the feature”. In your C++ example, it’s very easy and “varying strings” are almost immediately available. I wish the same was available in Fortran with a comparable effort.

Because type() marks clearly that’s a user-defined data type: it’s helpful. Not a mistake at all, in my book.

Apart from the fact that I wouldn’t be exactly thrilled to clutter my code with type(integer) declarations, as explained above, the distinction between basic and user-defined, “bespoke” data types it’s useful for code readability and maintenance.