void blah(const char* ) {printf("const char*\n");}
void blah(char[2] ) {printf("char 2\n");}
void blah(char[4] ) {printf("char 4\n");}
void blah(const std::string&) {printf("const string ref\n");}
template<class t>
void blah(t) {printf ("unknown\n");}
int main(int, char*)
{
blah("hi");
char a[4];
blah(&a[0]);
blah(a);
std::string s;
blah(s);
}