С++ 11: количество параметров функции шаблона Variadic?
Как я могу получить количество аргументов функции вариационного шаблона?
т
template<typename... T>
void f(const T&... t)
{
int n = number_of_args(t);
...
}
Каков наилучший способ реализовать number_of_args в приведенном выше?
Ответ 1
Просто напишите это:
const int n = sizeof...(T); //you may use `constexpr` instead of `const`
Обратите внимание, что n является константным выражением (известно во время компиляции), что означает, что вы можете использовать его там, где требуется постоянное выражение, например:
std::array<int, n> a; //array of n elements
std::array<int, 2*n> b; //array of (2*n) elements
auto middle = std::get<n/2>(tupleInstance);
Обратите внимание, что если вы хотите вычислить агрегированный размер упакованных типов (в отличие от количества типов в пакете), то вы должны сделать что-то вроде этого: