这是对我之前的问题的跟进。
考虑一下我用以下原型编写了一个函数:
int a_function(Foo val);
其中 foo 被认为是类型定义的 unsigned int。不幸的是,由于缺乏文档,这无法验证。
因此,有人出现并使用 a_function,但使用 unsigned int 作为参数调用它。
故事在这里发生了转折。Foo 实际上是一个类,它可以在显式构造函数中将 unsigned int 作为 unsigned int 的单个参数。
编译器通过对参数进行类型转换来呈现函数调用是否是标准且可靠的行为。即编译器是否应该识别不匹配并插入构造函数?或者我应该得到一个编译时错误报告类型不匹配。