There is no problem putting objects past the end of another object in C++.
I use this approach as part my zero-copy serialization library for what I call "out-of-line" sequences.
It does require smart usage of std::launder to be standards-compliant though.