template <class F>
struct return_type;
template <class R, class... A>
struct return_type<R (*)(A...)>
{
typedef R type;
};
int main()
{
int (*p)(int, char);
return_type<decltype(p)>::type i = 0;
return i;
}
dGVtcGxhdGUgPGNsYXNzIEY+CnN0cnVjdCByZXR1cm5fdHlwZTsKCnRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcy4uLiBBPgpzdHJ1Y3QgcmV0dXJuX3R5cGU8UiAoKikoQS4uLik+CnsKICB0eXBlZGVmIFIgdHlwZTsKfTsKCgppbnQgbWFpbigpCnsKCWludCAoKnApKGludCwgY2hhcik7CglyZXR1cm5fdHlwZTxkZWNsdHlwZShwKT46OnR5cGUgaSA9IDA7CglyZXR1cm4gaTsKfQ==