template<class T>
struct decompose;
template<class Func, class... Args>
struct decompose<Func(Args...)>
{
constexpr static int n = sizeof...(Args);
};
template<class T>
int deduce(T&& t)
{
return decompose<T()>::n;
}
int main()
{
deduce([](){});
}
dGVtcGxhdGU8Y2xhc3MgVD4Kc3RydWN0IGRlY29tcG9zZTsKCnRlbXBsYXRlPGNsYXNzIEZ1bmMsIGNsYXNzLi4uIEFyZ3M+CnN0cnVjdCBkZWNvbXBvc2U8RnVuYyhBcmdzLi4uKT4KewogICAgY29uc3RleHByIHN0YXRpYyBpbnQgbiA9IHNpemVvZi4uLihBcmdzKTsKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmludCBkZWR1Y2UoVCYmIHQpCnsKICAgIHJldHVybiBkZWNvbXBvc2U8VCgpPjo6bjsKfQoKaW50IG1haW4oKQp7CiAgICBkZWR1Y2UoW10oKXt9KTsKfQ==