which worked fine.
I'm just wondering why it works when i call std::move on 'platform'?
as far as i understand std::move just turns an lvalue into an rvalue reference, but isn't the argument 'platform' already of rvalue reference type?
I think the reason is because you might want to use it multiple times before moving from it. If it moved automatically it could easily lead to bugs where the object is used after it has been moved from without you realising.