The value parameter A has to be copied, the reference parameter does not. The value parameter version assumes a copy constructor, which you are making.
In other words, for A(A) to work, A(A) has to already exist. This is because A(A) says "pass me a copy of A".