This looks awesome. I don't have access to clang++ with reflection enabled yet so I can't really play with it. But does it handle correctly structures with padding (i.e. all members trivial but there is padding between members):
struct Data {
char c;
int x;
};