Bottom line, with the example I posted, I will still have two occurences of the type coo, remote to the fact that pff is local and that the type content is allocated in a function.
I have no idea what you mean by "remote to the fact" but it's completely unrelated to the fact that pff is local and that it's allocated in a function, if that's what you mean. You have two instances because you created two. Initially I assumed that you wanted two, but apparently not. Where they are created is entirely immaterial.