z1=z+complex<int>(1,0);

complex<float>とcomplex<double>の和は出来なくても良いと思うけど
z3=hoge_cast<complex<double>>(z1)+z2;