#include <iostream>
using namespace std;
template<typename ... Args>
struct ParameterSize
{
static const uint value = 0;
};
template<typename Type, typename... Remain>
struct ParameterSize<Type, Remain...>
{
static const uint value = sizeof(Type) + ParameterSize<Remain...>::value;
};
template <typename ReturnType, typename...Args>
uint GetParameterSize(ReturnType(*method)(Args...))
{
return ParameterSize<Args...>::value;
}
void MyMethod3(int a, char b, int c )
{
}
int main() {
// your code goes here// Elsewhere
uint size = GetParameterSize(&MyMethod3);
cout << size << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgLi4uIEFyZ3M+CnN0cnVjdCBQYXJhbWV0ZXJTaXplCnsKICAgc3RhdGljIGNvbnN0IHVpbnQgdmFsdWUgPSAwOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgdHlwZW5hbWUuLi4gUmVtYWluPgpzdHJ1Y3QgUGFyYW1ldGVyU2l6ZTxUeXBlLCBSZW1haW4uLi4+CnsKICAgc3RhdGljIGNvbnN0IHVpbnQgdmFsdWUgPSBzaXplb2YoVHlwZSkgKyBQYXJhbWV0ZXJTaXplPFJlbWFpbi4uLj46OnZhbHVlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lLi4uQXJncz4KdWludCBHZXRQYXJhbWV0ZXJTaXplKFJldHVyblR5cGUoKm1ldGhvZCkoQXJncy4uLikpCnsKICAgIHJldHVybiBQYXJhbWV0ZXJTaXplPEFyZ3MuLi4+Ojp2YWx1ZTsKfQp2b2lkIE15TWV0aG9kMyhpbnQgYSwgY2hhciBiLCBpbnQgYyApCnsKfQoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZS8vIEVsc2V3aGVyZQogICAgdWludCBzaXplID0gR2V0UGFyYW1ldGVyU2l6ZSgmTXlNZXRob2QzKTsKICAgIGNvdXQgPDwgc2l6ZSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=