Take a look at thhis file comming with the engine source:
/UE4/UnrealEngine/Engine/Source/Programs/UnrealHeaderTool/Private/HeaderParser.cpp
1858: FError::Throwf(TEXT(“‘%s’ conflicts with ‘%s’”), *ThisName.ToString(), *It->GetFullName() );
The HeaderParser iterates trough all known function names before adding a new function to the unreal functions list, throwing this if there is one with the same name, no matter what the parameters are.
So it is not possible to have two UFUNCTIONS with the same name in the same class.
But you can still go the way I prefer and do this:
UFUNCTION()
FStringAssetReference getDefaultPawn(EName::Type Name);
UFUNCTION()
FStringAssetReference getDefaultPawnWithLevel(EName::Type Name, uint8 Level);
Thats much more literate on the calling side if you do a call like
myObj->getDefaultPawnWithLevel(SOMETHING, 5);
No need to indicate that 5 is meant as level here.