How to change levels using a soft pointer?

Given a TSoftObjectPtr<UWorld> LevelPtr, how do we switch to this level using C++?

Do we have to explicitly load the pointer or can we somehow get the URL to pass into GetOwningPlayer()->SwitchLevel(URL) ? Is there another function which works with soft pointers directly?

Presumably we can ask the engine to switch to an unloaded level without first loading it to get its url.

Looks like UGameplayStatics::OpenLevelBySoftObjectPtr() is what I wanted.