efficiently transpose array and assign to a different type
===

Consider the following:

    program main
    integer, parameter :: n=10, m=20
    integer ints(n,m)
    real floats(m,n)

    !... initialize ints
    floats=transpose(ints)
    !... do stuff with floats
    end

looking at the documentation for gfortran, it seems that `transpose(ints)` will return an integer array which will then be cast to reals.  In this operation, the compiler (gfortran) creates a temporary array for the transposed array.  (compile with `gfortran -O3 -Warray-temporaries -o test test.f90`).  Is there a way to do this (for arbitrary types) without generating a temporary array?  (I also tried `floats(:,:)=transpose(ints)`).  Does it behave this way with other compilers?