#include <iostream>
#include <functional>
template <typename... TT>
void Invoke(std::function<void(int)> &fn, TT&&... args)
{
//fn(std::forward<TT>(args)...);
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
template <typename T, typename... TT>
void Invoke(T &&obj, TT&&... args)
{
//func(std::forward<TT>(args)..., obj);
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
int main()
{
std::function<void(int)> fn = [](int n)
{
};
Invoke(fn, 1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAp0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVFQ+CnZvaWQgSW52b2tlKHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQpPiAmZm4sIFRUJiYuLi4gYXJncykKewogICAgLy9mbihzdGQ6OmZvcndhcmQ8VFQ+KGFyZ3MpLi4uKTsKICAgIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IHN0ZDo6ZW5kbDsKfQogCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBUVD4Kdm9pZCBJbnZva2UoVCAmJm9iaiwgVFQmJi4uLiBhcmdzKQp7CiAgICAvL2Z1bmMoc3RkOjpmb3J3YXJkPFRUPihhcmdzKS4uLiwgb2JqKTsKICAgIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IHN0ZDo6ZW5kbDsKfQogCmludCBtYWluKCkKewogCiAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50KT4gZm4gPSBbXShpbnQgbikKICAgIHsKICAgIH07CiAKICAgIEludm9rZShmbiwgMSk7ICAgIAogICAgcmV0dXJuIDA7Cn0K