What if youre working with library types? The problem is not not you compare a bunch of fields but that the implementation on those members is most likely bad.
Even if the tool works perfectly, you have to run it every time you change something. It's not the end of the world, but it's still much nicer to just have a macro to derive it at compile time.