virtual float3

Is there any way to create a copy constructor and/or overloaded = operator for virtual float3’s? I can work around this using component-wise assignment, but it would be nice to be able to do assignments directly; i.e. (using CUDA 5)

volatile float3 a,b;
a= b; // error message from compiler

a.x= b.x; // works
a.y= b.y;
a.z= b.z;