I had this same problem a few years ago and it irked me to no end.
The rules in C are more simply stated (i.e. they don’t list exceptions like converting char** to const char*const*). Consequenlty, it’s just not allowed. With the C++ standard, they included more rules to allow cases like this.
In the end, it’s just a problem in the C standard. I hope the next standard (or technical report) will address this.