#include <iostream>
#include <type_traits>
using namespace std;
namespace detail
{
template <typename T>
auto has_to_string_helper (...) -> false_type;
template <typename T>
auto has_to_string_helper (int) -> decltype(std::to_string(std::declval<T>()), true_type{});
}
template <typename T>
using has_to_string = decltype(detail::has_to_string_helper<T>(0));
template<typename T>
enable_if_t<has_to_string<T>::value, void> stringify(T t){
cout << "has\n";
}
template<typename T>
enable_if_t<!has_to_string<T>::value, void> stringify(T t){
cout << "has not\n";
}
int main() {
stringify(0);
stringify("");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpuYW1lc3BhY2UgZGV0YWlsCnsKCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgoJYXV0byBoYXNfdG9fc3RyaW5nX2hlbHBlciAoLi4uKSAtPiBmYWxzZV90eXBlOwoJCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KCWF1dG8gaGFzX3RvX3N0cmluZ19oZWxwZXIgKGludCkgLT4gZGVjbHR5cGUoc3RkOjp0b19zdHJpbmcoc3RkOjpkZWNsdmFsPFQ+KCkpLCB0cnVlX3R5cGV7fSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp1c2luZyBoYXNfdG9fc3RyaW5nID0gZGVjbHR5cGUoZGV0YWlsOjpoYXNfdG9fc3RyaW5nX2hlbHBlcjxUPigwKSk7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKZW5hYmxlX2lmX3Q8aGFzX3RvX3N0cmluZzxUPjo6dmFsdWUsIHZvaWQ+IHN0cmluZ2lmeShUIHQpewogICAgY291dCA8PCAiaGFzXG4iOwp9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IAplbmFibGVfaWZfdDwhaGFzX3RvX3N0cmluZzxUPjo6dmFsdWUsIHZvaWQ+IHN0cmluZ2lmeShUIHQpewogICAgY291dCA8PCAiaGFzIG5vdFxuIjsKfQoKaW50IG1haW4oKSB7CglzdHJpbmdpZnkoMCk7CglzdHJpbmdpZnkoIiIpOwoJcmV0dXJuIDA7Cn0=