c++实现遍历tuple

#include
#include

namespace detail {
    template
    void for_each(Tuple&& tuple, F&& f, std::index_sequence)
    {
        using expand = int[];
        void(expand{
            0,
            (f(std::get(std::forward(tuple))), 0)...
            });
    };
}

template
void for_each(Tuple&& tuple, F&& f)
{
    using base_tuple = std::decay_t;
    constexpr auto tuple_size = std::tuple_size::value;
    detail::for_each(std::forward(tuple),
        std::forward(f),
        std::make_index_sequence());
}

template
void display(Args&&...args) {
    for_each(std::forward_as_tuple(std::forward(args)...), [&](auto&& arg) {
        //using arg_type = decltype(arg);
        std::cout << arg << std::endl;
        });
}

int main()
{
    display(1, 2, 3, 4);
}
 

你可能感兴趣的:(DNS协议详解,git,reset,--mixed,--hard,--sof,c++,c++)