Risoluzione di ambiguità
Per eseguire le conversioni esplicite da un tipo a un altro, è necessario utilizzare cast, specificare il nome del tipo desiderato.Risultato di un cast di tipo nell'ambiguità sintattica.Nell'cast di tipo funzione è ambiguo:
char *aName( String( s ) );
È poco chiara se è una dichiarazione di funzione o una dichiarazione dell'oggetto con un cast di tipo funzione come l'inizializzatore: Possibile dichiarare una funzione che restituisce il tipo char * accetta un argomento di tipo String, o possibile dichiarare l'oggetto aName e inizializzarla con il valore di s cast al tipo String.
Se una dichiarazione può essere considerata una dichiarazione di funzione valida, viene considerato come tali.Solo se non può eventualmente essere una dichiarazione di funzione, ovvero se è errata - è un'istruzione esaminato per verificare se è un cast di tipo funzione.Di conseguenza, il compilatore considera l'istruzione come una dichiarazione di una funzione e ignora le parentesi intorno all'identificatore s.Di altra parte, le istruzioni:
char *aName( (String)s );
e
char *aName = String( s );
sono chiaramente le dichiarazioni di oggetti e una conversione definita dall'utente da tipo String per digitare char * viene richiamato per eseguire l'inizializzazione di aName.