It looks like FDynamicOutputHelper::IsTypePickerPin and FDynamicOutputHelper::GetTypePickerPin need to be updated to support soft references.
Create a new C++ class with the following code:
UCLASS() class UTestFunctionLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() // OK UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="Class")) static UObject* TestClass(const TSubclassOf<UObject>& Class) { return nullptr; } // NG UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="Asset")) static UObject* TestAssetPtr(const TAssetPtr<UObject>& Asset) { return nullptr; } // NG UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="AssetClass")) static TSubclassOf<UObject> TestAssetClass(const TAssetSubclassOf<UObject>& AssetClass) { return nullptr; } };
And after compiling and starting the editor, try placing the nodes TestClass, TestAssetPtr, and TestAssetClass in a Blueprint.
Expected: All three change the output type to match the type of the input parameter as it is changed.
Actual: Only TestClass works as expected
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-47982 in the post.