If you need to create a copy constructor, you can use some auxiliary structure for which you will not create a copy constructor (leave the default value) and save the data that should be copied to the field (by value) of this type. Then you need only one field for copying.
source share