使用元组作为函数的参数

时间:2018-11-27 15:50:24

标签: c++11

嗨,我正在尝试将元组作为参数传递给函数。 我不想指定元组中的元素数量(我遵循以下示例: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

1 个答案:

答案 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