class my_vector
    : private std::vector<int>
{
    template <std::size_t... Index>
    void func_1_(std::index_sequence<Index...>)
    {
        int n[] = { 0, (static_cast<void>(push_back(Index)), 0)... };
    }
    template <std::size_t... Index>
    void func_2_(std::index_sequence<Index...>)
    {
        [](auto&&...){}((static_cast<void>(push_back(Index)), 0)...);
    }
public:
    template <std::size_t N>
    void func_1()
    {
        func_1_(std::make_index_sequence<N>{});
    }
    template <std::size_t N>
    void func_2()
    {
        func_2_(std::make_index_sequence<N>{});
    }

    using std::vector<int>::begin;
    using std::vector<int>::end;
    using std::vector<int>::clear;
};


int main()
{
    my_vector v;
    for(auto& i : v)
    {
        std::cout << i;
    }

    v.func_1<10>();
    for(auto& i : v)
    {
        std::cout << i;
    }
    std::cout << std::endl;

    v.clear();
    for(auto& i : v)
    {
        std::cout << i;
    }

    v.func_2<10>();
    for(auto& i : v)
    {
        std::cout << i;
    }
    std::cout << std::endl;
}

このように出力されました。

0123456789
9876543210

こう出力されると想定していました。

0123456789
0123456789

どうして2行目の出力がそうなるのか教えて欲しいです。