Hi all, this means that pr66775 is to be closed as resolved invalid, because the current implementation is alright, but only the program to compile is garbage. Ok, suits me.
- Andre On Thu, 9 Jul 2015 12:41:31 -0700 Steve Kargl <s...@troutmask.apl.washington.edu> wrote: > On Thu, Jul 09, 2015 at 08:59:08PM +0200, Andre Vehreschild wrote: > > Hi Steve, > > > > Thanks for your knowledge. Can you support your statement that an > > allocatable function has to return an allocated object by a part of the > > standard? I totally agree with you that this code is ill-designed, but IMO > > is it not the task of the compiler to address ill design. The compiler has > > to comply to the standard and the standard allows allocatable objects to be > > unallocated. So why has the result of a function be allocated always? > > > > Regards, > > Andre > > > > I think the following excerpts from F2008 are the relevant > clauses, especially the 2nd to last sentence in the excerpt > from 12.6.2.2. > > ! 12.5.3 > ! > ! When execution of the function is complete, the value of > ! the function result is available for use in the expression > ! that caused the function to be invoked. > ! > ! 12.6.2.2 > ! > ! If RESULT appears, the name of the result variable of the > ! function is result-name and all occurrences of the function > ! name in execution-part statements in its scope refer to the > ! function itself. If RESULT does not appear, the name of the > ! result variable is function-name and all occurrences of the > ! function name in execution-part statements in its scope are > ! references to the result variable. The characteristics (12.3.3) > ! of the function result are those of the result variable. On > ! completion of execution of the function, the value returned is > ! that of its result variable. If the function result is a pointer, > ! the shape of the value returned by the function is determined by > ! the shape of the result variable when the execution of the function > ! is completed. If the result variable is not a pointer, its value > ! shall be defined by the function. If the function result is a > ! pointer, on return the pointer association status of the result > ! variable shall not be undefined. > -- Andre Vehreschild * Email: vehre ad gmx dot de