Overloaded items cannot be resolved if the argument types include common literals. i.e.,
TYPE twobit IS ('0', '1');
TYPE fourbit IS ('U', '0', '1', 'Z');
FUNCTION abc (x: twobit) RETURN INTEGER;
FUNCTION abc (x: fourbit) RETURN INTEGER;
....
y <= abc('0'); --Which function do we use?
Resolve the ambiguity by qualifying the literal:
y <= abc(twobit'('0');
General tip: Use qualification to avoid numerous problems where the compiler cannot seem to select a specific meaning, e.g., read (abc, string'("abcabc"));