一个接受布尔值的函数:
void foo(bool b) {
if (b)
std::cout << "true\n";
else
std::cout << "false\n";
}
(错误地)称为:
foo("false");
并输出“真”,因为 调用时,字符串“false”被隐式转换为值为 true 的布尔值。是否有可能以某种方式限制foo(bool)
使用非布尔参数调用函数的可能性。
一个接受布尔值的函数:
void foo(bool b) {
if (b)
std::cout << "true\n";
else
std::cout << "false\n";
}
(错误地)称为:
foo("false");
并输出“真”,因为 调用时,字符串“false”被隐式转换为值为 true 的布尔值。是否有可能以某种方式限制foo(bool)
使用非布尔参数调用函数的可能性。
您可以将此函数设为模板,或者为可以隐式转换为 bool 的类型添加不允许的重载:
https://godbolt.org/z/3678j5