I am struggling to understand the different behavior of => and = when assigning one pointer to another in Fortran 95. I.e. say I have a derived data type foo, what then is the difference between the last two lines in the following snippet, are they equivalent?
type(foo), target :: f
type(foo), pointer :: p1, p2
f = foo(...)
p1 => foo
p2 => p1
p2 = p1