Ceci est une suite à my previous question.Un suivi de la coercition de type en C++, tel qu'il peut être interprété par conversion de type
Tenir compte que j'écris une fonction avec le prototype suivant:
int a_function(Foo val);
Où foo est considéré comme un type défini unsigned int. Ceci n'est malheureusement pas vérifiable par manque de documentation. Donc, quelqu'un arrive et utilise une fonction, mais l'appelle avec un int non signé en tant qu'argument.
Ici l'histoire prend un tour. Foo s'avère être une classe, qui peut prendre un int non-signé comme un seul argument de unsigned int dans un constructeur explicite.
Est-ce un comportement standard et fiable pour le compilateur de rendre l'appel de fonction en effectuant une conversion de type sur l'argument. C'est à dire. le compilateur est-il censé reconnaître la discordance et insérer le constructeur? Ou devrais-je obtenir une erreur de compilation rapportant la différence de type.