打印变长tuple中的所有元素值

来源:互联网 发布:js object添加元素 编辑:程序博客网 时间:2024/06/05 04:50
  • 代码
    来源:c++ reference中std::tuple的构造函数中的例子
template<class Tuple, std::size_t N>struct TuplePrinter {    static void print(const Tuple& t)    {        TuplePrinter<Tuple, N-1>::print(t);        std::cout << ", " << std::get<N-1>(t);    }};template<class Tuple>struct TuplePrinter<Tuple, 1>{    static void print(const Tuple& t)    {        std::cout << std::get<0>(t);    }};template<class... Args>void print(const std::tuple<Args...>& t){    std::cout << "(";    TuplePrinter<decltype(t), sizeof...(Args)>::print(t);    std::cout << ")\n";}}
  • 学习点
    • 变长模板参数的使用,sizeof…(Args)可以获得模板参数的个数
    • 一个基于模板的编译器递归 :使用非类型模板参数和一个显式模板特化来实现