C++ 遍历可变模板参数 iterate variadic template arguments


template
inline typename std::enable_if_t for_each(std::tuple&, FuncT)
{
}

template
inline typename std::enable_if_t for_each(std::tuple& t, FuncT f)
{
    f(std::get(t));   
    for_each(t, f);
}

template
auto print(Args ...args)
{
    auto a = std::forward_as_tuple(args...);
    for_each(a, [](auto x)
    {
        std::cout << typeid(x).name() << ":" << x << std::endl;
    });
}

int main()
{
    print(10, 'c', "bbb", string("123"));
}

结果如下:

int:10

char:c

char const *:bbb

class std::basic_string, class std::allocator >:123

你可能感兴趣的:(C++ 遍历可变模板参数 iterate variadic template arguments)