Допустим, у меня есть следующее объявление функции:
template<typename signature>
int foo();
Учитывая вышеупомянутую функцию, можно ли определить foo
таким образом, чтобы она возвращала количество аргументов функции которые были переданы в параметре шаблона decltype
?
Таким образом, пример использования может выглядеть так:
int bar(int a, int b)
{
return a + b;
}
int jar(int a)
{
return a * a;
}
int main()
{
std::cout << foo<decltype(bar)>() << std::endl; // Desired output: 2
std::cout << foo<decltype(jar)>() << std::endl; // Desired output: 1
}
Edit:
Спасибо всем за ответы. Кажется, они работают. Однако я забыл упомянуть еще один вариант использования.
Допустим, я хочу получить количество аргументов следующей функции:
int __stdcall car(int a, int b, int c)
{
return a * b + c;
}
Ответы пока не работают с такой функцией, которая использует соглашение __stdcall
.
Есть идеи, почему и что можно с этим сделать?