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.
| 5 | 
| Component | UE - Gameplay - Blueprint Compiler | 
|---|---|
| Affects Versions | 4.17, 4.18 | 
| Target Fix | 4.26 | 
| Created | Aug 2, 2017 | 
|---|---|
| Resolved | May 19, 2020 | 
| Updated | Oct 16, 2020 |