* @param pin supplies whether the singleton should be pinned. By default, the manager only stores
* a weak pointer. This allows a singleton to be cleaned up if it is not needed any more. All code
* @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not
std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
* @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not
* @param pin supplies whether the singleton should be pinned. By default, the manager only stores
* a weak pointer. This allows a singleton to be cleaned up if it is not needed any more. All code
* @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not