Как мне вернуть количество аргументов функции? - PullRequest
1 голос
/ 09 мая 2020

Например, если у меня есть

int MyFunction(int,...);//no. of parameters is unknown

И в main ()

MyFunction(1,2,3,4);

Возвращаемое значение должно быть 4. Я пробовал stdarg.h, но использовать это вы нужно знать количество параметров, чтобы меня это не устраивало. Спасибо!

Ответы [ 2 ]

4 голосов
/ 09 мая 2020

Просто верните количество аргументов в пакете параметров.

template<typename ...Args>
unsigned MyFunction(Args... args) {
    return sizeof...(args);
}

int main() {
    return MyFunction(1,2,3);
}
1 голос
/ 09 мая 2020

Вы можете выучить и использовать variadic template s, как показано ниже

#include <iostream>

template <typename ... Types>
size_t func(Types ... args){

    return sizeof...(args);
}

int main()
{
    std::cout << func(1, 2, 3, 4);
}
...