namespace Array
{
template<typename T> class _ischararray_;
template<typename T, int N>
class _ischararray_<T[N]> { public: static bool _ischararray(){return true;}};
template<typename T>
class _ischararray_<T*> { public: static bool _ischararray(){return false;}};
template<class T>
bool isCharArray(const T& x) { return _ischararray_<T>::_ischararray();}
}
using namespace Array;
#include <iostream>
int main ()
{
const char s1[] = "hello-1";
const char *s2 = "hello-2";
if(isCharArray("hello-3")) std::cout<<"hello-3 char array"<<std::endl;
if(isCharArray(s1)) std::cout<<"s1 char array"<<std::endl;
if(isCharArray(s2)) std::cout<<"s2 char array"<<std::endl;
}
bmFtZXNwYWNlIEFycmF5CnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBfaXNjaGFyYXJyYXlfOwogIAogIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGludCBOPiAKICBjbGFzcyBfaXNjaGFyYXJyYXlfPFRbTl0+IHsgcHVibGljOiBzdGF0aWMgYm9vbCBfaXNjaGFyYXJyYXkoKXtyZXR1cm4gdHJ1ZTt9fTsgCgogIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IAogIGNsYXNzIF9pc2NoYXJhcnJheV88VCo+IHsgcHVibGljOiBzdGF0aWMgYm9vbCBfaXNjaGFyYXJyYXkoKXtyZXR1cm4gZmFsc2U7fX07CiAgCiAgdGVtcGxhdGU8Y2xhc3MgVD4gCiAgYm9vbCBpc0NoYXJBcnJheShjb25zdCBUJiB4KSB7IHJldHVybiBfaXNjaGFyYXJyYXlfPFQ+OjpfaXNjaGFyYXJyYXkoKTt9IAp9Cgp1c2luZyBuYW1lc3BhY2UgQXJyYXk7CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmludCBtYWluICgpCnsKICAgY29uc3QgY2hhciBzMVtdICA9ICJoZWxsby0xIjsKICAgY29uc3QgY2hhciAqczIgICA9ICJoZWxsby0yIjsKICAgaWYoaXNDaGFyQXJyYXkoImhlbGxvLTMiKSkgIHN0ZDo6Y291dDw8ImhlbGxvLTMgY2hhciBhcnJheSI8PHN0ZDo6ZW5kbDsKICAgaWYoaXNDaGFyQXJyYXkoczEpKSBzdGQ6OmNvdXQ8PCJzMSBjaGFyIGFycmF5Ijw8c3RkOjplbmRsOwogICBpZihpc0NoYXJBcnJheShzMikpIHN0ZDo6Y291dDw8InMyIGNoYXIgYXJyYXkiPDxzdGQ6OmVuZGw7CiAgCn0=