标签: c++
在Microsoft C ++ 2017中,我刚遇到了C ++隐式转换的奇怪问题。
给予
void f(int);
通话
f("test");
出现错误,并出现编译器错误消息。
但是如果我将函数声明更改为
void f(bool);
然后,该调用无需窥视即可编译。 (这并不特定于char*;其他指针类型也会发生同样的情况。)我知道,bool的隐式变宽转换可能会发生意外,但这是隐式变窄的转换,我没想到。
char*
bool
关于这为什么成立,我是否忘记了一些理由?