#include <iostream>
 
template <typename R, typename ... Types> constexpr size_t getArgumentCount( R(*f)(Types ...))
{
   return sizeof...(Types);
}
 
void foo(int a, int b, int c)
{
}
 
int bar()
{
   return 0;
}
 
int baz(double)
{
   return 0;
}
 
int main()
{
    std::cout << getArgumentCount(foo) << std::endl;
    std::cout << getArgumentCount(bar) << std::endl;
    std::cout << getArgumentCount(baz) << std::endl;
    return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIC4uLiBUeXBlcz4gY29uc3RleHByIHNpemVfdCBnZXRBcmd1bWVudENvdW50KCBSKCpmKShUeXBlcyAuLi4pKQp7CiAgIHJldHVybiBzaXplb2YuLi4oVHlwZXMpOwp9Cgp2b2lkIGZvbyhpbnQgYSwgaW50IGIsIGludCBjKQp7Cn0KCmludCBiYXIoKQp7CiAgIHJldHVybiAwOwp9CgppbnQgYmF6KGRvdWJsZSkKewogICByZXR1cm4gMDsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgZ2V0QXJndW1lbnRDb3VudChmb28pIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBnZXRBcmd1bWVudENvdW50KGJhcikgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IGdldEFyZ3VtZW50Q291bnQoYmF6KSA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQ==