I don't know the answer. But some questions come to my mind. Does Foo(3) lives on the stack or the heap ?There is also no assignment from Foo to Foo for Foo(3), there is a conversion.
And what happes with Foo[3] arr = [one, two, Foo(3)]; Foo[] arr= [one, two, Foo(3)]; and Foo x=Foo(3).dup()