Это продолжение до моего предыдущего вопроса .
Учтите, что я пишу функцию со следующим прототипом:
int a_function(Foo val);
Где foo считается типом, определенным как unsigned int. К сожалению, это невозможно проверить из-за отсутствия документации.
Итак, кто-то приходит и использует a_function, но вызывает ее в качестве аргумента без знака int.
Здесь история разворачивается. Foo оказывается на самом деле классом, который может принимать неподписанное int как единственный аргумент unsigned int в явном конструкторе.
Это стандартное и надежное поведение для компилятора при вызове функции путем преобразования типа в аргументе. То есть должен ли компилятор распознать несоответствие и вставить конструктор? Или я должен получить сообщение об ошибке компиляции, сообщающее о несоответствии типов.