ポインタとオーバーロードと標準変換のからみってどう思う?
char* c;
fc(c);
の呼び出しって、void fc(char*)が存在しない場合、
だいたい次の順で呼び出されるのが決まる。

1.fc(char*) or fc(char* const)
2.fc(const char*) or fc(const char* const)
3.fc(volatile char*) or fc(volatile char* const)
4.fc(const volatile char*) or fc(const volatile char* const)
5.fc(void*) or fc(void* const)
6.fc(const void*) or fc(const void* const)
7.fc(volatile void*) or fc(volatile void* const)
8.fc(const volatile void*) or fc(const volatile void* const)
9.fc(bool) or fc(const bool) or fc(volatile bool) or fc(const volatile bool)