#include <string>
#include <iostream>
template<size_t symbols_count> auto
foo(const char (& sz_text)[symbols_count]) -> void { ::std::cout << 0; }
template<typename tp_Char> auto
foo(tp_Char const * & psz_text) -> void { ::std::cout << 1; }
template<typename tp_Char> auto
foo(tp_Char const * && psz_text) -> void { ::std::cout << 2; }
int main()
{
foo("qqq"); // вызовет (0)
const char sz_text[] = {"www"};
foo(sz_text); // вызовет (0)
char const * psz_text("eee");
foo(psz_text); // вызовет (1)
::std::string text("rrr");
foo(text.c_str()); // // вызовет (2)
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KCiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPHNpemVfdCBzeW1ib2xzX2NvdW50PiBhdXRvCmZvbyhjb25zdCBjaGFyICgmIHN6X3RleHQpW3N5bWJvbHNfY291bnRdKSAtPiB2b2lkIHsgOjpzdGQ6OmNvdXQgPDwgMDsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgdHBfQ2hhcj4gYXV0bwpmb28odHBfQ2hhciBjb25zdCAqICYgcHN6X3RleHQpIC0+IHZvaWQgeyA6OnN0ZDo6Y291dCA8PCAxOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSB0cF9DaGFyPiBhdXRvCmZvbyh0cF9DaGFyIGNvbnN0ICogJiYgcHN6X3RleHQpIC0+IHZvaWQgeyA6OnN0ZDo6Y291dCA8PCAyOyB9CgppbnQgbWFpbigpCnsKICAgIGZvbygicXFxIik7IC8vINCy0YvQt9C+0LLQtdGCICgwKQogICAgCiAgICBjb25zdCBjaGFyIHN6X3RleHRbXSA9IHsid3d3In07CiAgICAKICAgIGZvbyhzel90ZXh0KTsgLy8g0LLRi9C30L7QstC10YIgKDApCiAgICAKICAgIGNoYXIgY29uc3QgKiBwc3pfdGV4dCgiZWVlIik7CiAgICAKICAgIGZvbyhwc3pfdGV4dCk7IC8vINCy0YvQt9C+0LLQtdGCICgxKQogICAgCiAgICA6OnN0ZDo6c3RyaW5nIHRleHQoInJyciIpOwogICAgCiAgICBmb28odGV4dC5jX3N0cigpKTsgLy8gLy8g0LLRi9C30L7QstC10YIgKDIpCiAgICAKICAgIHJldHVybiAwOwp9Cg==