Using postgres 12.2:
select '46ee2794-ddd1-4c4b-be04-82908ff1885d'::"uuid" /*works, uuid is a built-in type, not an alias*/
select '1'::"int4" /*works ... int4 is alias for integer*/
select '1'::"integer" /*fails ... integer is built-in type*/
I have since abandoned the double quotes, but am still curious as to why this behaves the way it does!