Consider the following code:
void foo(bool parameter) {
std::cout << parameter << "\n";
}
int main() {
foo("const char *argument");
}
I want the compiler to raise a warning when passing const char*
instead of bool
as a parameter to function foo
.
But GCC implicitly converts it. I tried -Wall
, -Wextra
, and -Wpedantic
, but none of these issue a warning. Is there a flag that could catch such an implicit conversion (invalid parameter type)?
Ignore the fact that the function has an argument of type bool
, which some may see as bad code style. I can't refactor that part.
The standard just mentions such an implicit conversion will occur:
A prvalue of integral, floating-point, unscoped enumeration, pointer, and pointer-to-member types can be converted to a prvalue of type bool.
I know such behavior is very convenient in if (ptr)
statements, but for me, in the case of passing parameters, it is clearly wrong and a source of bugs.