Maybe I’m wrong, but aren’t move semantics mostly to aid with smart pointers and move constructors an optimization to avoid copy constructors? Neither of which exist in c.
I’m not sure what collection type you’re referring to, but most c programmers would probably agree that polymorphism isn’t a good thing.