派生类型的空数组
Empty array of derived type
如何正确编写用户派生类型的空数组文字?
以下内容适用于 GFortran,但不适用于版本 19.1.1.217 的 IFort
type(SpinOrbIdx_t), allocatable :: det_I(:)
det_I = [SpinOrbIdx_t::]
这是 ifort 中的错误,还是 GFortran 的不符合标准的行为?
这确实是声明构造的(零大小)数组类型的正确语法。英特尔 Fortran 拒绝将此作为 Fortran 2003+ 语法是错误的:您应该将此报告给英特尔支持。
在 Fortran 2018 中,这是语法规则 R770(具有 R769 和其他上下文)。
作为变通方法,您可以将 det_I
分配为零大小或使用不带元素的结构构造函数的数组构造函数:
allocate(det_I(0))
det_I = [(SpinOrbIdx(...),i=1,0)] ! For appropriate structure constructor, etc.
如何正确编写用户派生类型的空数组文字?
以下内容适用于 GFortran,但不适用于版本 19.1.1.217 的 IFort
type(SpinOrbIdx_t), allocatable :: det_I(:)
det_I = [SpinOrbIdx_t::]
这是 ifort 中的错误,还是 GFortran 的不符合标准的行为?
这确实是声明构造的(零大小)数组类型的正确语法。英特尔 Fortran 拒绝将此作为 Fortran 2003+ 语法是错误的:您应该将此报告给英特尔支持。
在 Fortran 2018 中,这是语法规则 R770(具有 R769 和其他上下文)。
作为变通方法,您可以将 det_I
分配为零大小或使用不带元素的结构构造函数的数组构造函数:
allocate(det_I(0))
det_I = [(SpinOrbIdx(...),i=1,0)] ! For appropriate structure constructor, etc.