Blueprintable delegates with return values

For future reference you can replace most of your solution with this (at least you can in UE5.4):

UPROPERTY(BlueprintReadWrite)
FGammaFunctionDelegate gamma_delegate;