データメンバー分離すればいいんじゃない

class C
{
 struct Data { /*...*/ } data;

 C(const C& c)
 : data(c.data) // C::Dataのデフォルトコピコン
 {
  // やりたい処理
 }
};