Hi Eirikur. Regarding this statement: "Functions overloading is not transparent in the SQL Server's implementations and can cause some confusion." (emphasis mine), did you mean to say that it is not transparent, or that it is transparent? I think it should be "is".
Also, regarding the statement of: "The rule of thumb, which is not found in the BOL, is that the input data type directs the overloading", it does state in BOL, including in the documentation for REPLICATE that you linked to in the answer, which states:
Returns the same type as string_expression.
Similar wording can be found in the documentation for:
- REPLACE (this one even has the same note about truncation to 8000 bytes occurring when not passing in a MAX type)
Overloading is also used sometimes via number of parameters. Several functions have optional parameters, such as: