I\'m thinking of doing something similar to Safely copying fields between case classes of different types but with reordered fields, i.e.
case class A(foo: I
As noticed @MilesSabin (godlike shapeless creator), there is an align operation, it is used like:
import ops.hlist.Align
val aGen = LabelledGeneric[A]
val bGen = LabelledGeneric[B]
val align = Align[aGen.Repr, bGen.Repr]
bGen.from(align(aGen.to(A(12, 13)))) //> res0: B = B(13,12)
P.S. Noticed that there is an example on GitHub.