嗨,我正在尝试将元组作为参数传递给函数。 我不想指定元组中的元素数量(我遵循以下示例:tuple as function argument)
现在缺少的是我如何计算元组中的元素数量,以便使用std :: get
访问它#include<tuple>
#include<iostream>
template <typename... T> void fill(std::tuple<T...> values) {
std::cout << std::tuple_size<T...>::value << '\n';
//std::cout << std::get<0>(values) << '\n';
//std::cout << std::get<1>(values) << '\n';
}
int main() {
fill(std::make_tuple(2.));
fill(std::make_tuple(2., 5));
}
tuple_size似乎不适合使用(https://en.cppreference.com/w/cpp/utility/tuple/tuple_size)
答案 0 :(得分:3)
让我们看一下所提供参考文献中的示例:
template <class T>
void test(T t)
{
int a[std::tuple_size<T>::value]; // can be used at compile time
std::cout << std::tuple_size<T>::value << '\n'; // or at run time
}
int main()
{
test(std::make_tuple(1, 2, 3.14));
}
从该示例(以及引用本身,例如参见第二个声明),可以推断出std::tuple_size
的模板参数是 tuple 类型。
以您的情况为准
std::cout << std::tuple_size<std::tuple<T...>>::value << '\n';
// ^^^^^^^^^^^^^^^^
// Note: The tuple type is used here