#include <istream>
#include <ostream>
#include <iostream>
#include <type_traits>
#include <cstdint>
#define ENABLE_IF_INTEGRAL(T)\
typename = typename std::enable_if<std::is_integral<std::decay_t<T>>::value>::type
namespace detail{
template<class T, ENABLE_IF_INTEGRAL(T)>
struct wrapper{
T& x;
wrapper(T& xx) : x(xx){};
friend std::istream& operator >> (std::istream& is, wrapper<T> w){
auto read = +w.x;
is>>read;
w.x = static_cast<std::decay_t<T>>(read);
if(w.x != read)
is.setstate(std::ios::failbit);
return is;
}
};
}
template<class T, ENABLE_IF_INTEGRAL(T)>
auto intoInt(T& x){ return detail::wrapper<T>(x);}
template<class T, ENABLE_IF_INTEGRAL(T)>
auto asInt(T x){ return +x; }
#undef ENABLE_IF_INTEGRAL
int main() {
char foo;
std::cin>>intoInt(foo);
std::cout<< (std::cin.fail() ? "failed":"success")<<std::endl;
std::cout << asInt(foo) << '\n';
return 0;
}
I2luY2x1ZGUgPGlzdHJlYW0+CiNpbmNsdWRlIDxvc3RyZWFtPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KI2luY2x1ZGUgPGNzdGRpbnQ+CgojZGVmaW5lIEVOQUJMRV9JRl9JTlRFR1JBTChUKVwKdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPHN0ZDo6ZGVjYXlfdDxUPj46OnZhbHVlPjo6dHlwZQoKbmFtZXNwYWNlIGRldGFpbHsKICAgIHRlbXBsYXRlPGNsYXNzIFQsIEVOQUJMRV9JRl9JTlRFR1JBTChUKT4KICAgIHN0cnVjdCB3cmFwcGVyewogICAgICAgIFQmIHg7CiAgICAgICAgd3JhcHBlcihUJiB4eCkgOiB4KHh4KXt9OwoKICAgICAgICBmcmllbmQgc3RkOjppc3RyZWFtJiBvcGVyYXRvciA+PiAoc3RkOjppc3RyZWFtJiBpcywgd3JhcHBlcjxUPiB3KXsKICAgICAgICAgICAgYXV0byByZWFkID0gK3cueDsKICAgICAgICAgICAgaXM+PnJlYWQ7CiAgICAgICAgICAgIHcueCA9IHN0YXRpY19jYXN0PHN0ZDo6ZGVjYXlfdDxUPj4ocmVhZCk7CiAgICAgICAgICAgIGlmKHcueCAhPSByZWFkKQogICAgICAgICAgICAgICAgaXMuc2V0c3RhdGUoc3RkOjppb3M6OmZhaWxiaXQpOwogICAgICAgICAgICByZXR1cm4gaXM7CiAgICAgICAgfQogICAgfTsKfQoKdGVtcGxhdGU8Y2xhc3MgVCwgRU5BQkxFX0lGX0lOVEVHUkFMKFQpPgphdXRvIGludG9JbnQoVCYgeCl7IHJldHVybiBkZXRhaWw6OndyYXBwZXI8VD4oeCk7fQoKdGVtcGxhdGU8Y2xhc3MgVCwgRU5BQkxFX0lGX0lOVEVHUkFMKFQpPgphdXRvIGFzSW50KFQgeCl7IHJldHVybiAreDsgfQoKCiN1bmRlZiBFTkFCTEVfSUZfSU5URUdSQUwgICAgCgppbnQgbWFpbigpIHsKICAgIGNoYXIgZm9vOwogICAgCiAgICBzdGQ6OmNpbj4+aW50b0ludChmb28pOwoKICAgIHN0ZDo6Y291dDw8IChzdGQ6OmNpbi5mYWlsKCkgPyAiZmFpbGVkIjoic3VjY2VzcyIpPDxzdGQ6OmVuZGw7CgoJc3RkOjpjb3V0IDw8IGFzSW50KGZvbykgPDwgJ1xuJzsKCiAgICByZXR1cm4gMDsKfQ==