Inserting a variadic argument list into a vector?

后端 未结 6 1076
别那么骄傲
别那么骄傲 2020-12-09 02:44

Forgive me if this has been answered already, as I couldn\'t find it...

Basically I have an object that needs to take a variadic argument list in it\'s constructor

6条回答
  •  Happy的楠姐
    2020-12-09 03:12

    Another way to do it:

    #include 
    #include 
    
    using std::vector;
    
    template 
    void variadic_vector_emplace(vector&) {}
    
    template 
    void variadic_vector_emplace(vector& v, First&& first, Args&&... args)
    {
        v.emplace_back(std::forward(first));
        variadic_vector_emplace(v, std::forward(args)...);
    }
    
    struct my_struct
    {
        template 
        my_struct(Args&&... args)
        {
            variadic_vector_emplace(_data, std::forward(args)...);
        }
    
        vector& data() { return _data; }
    
    private:
      vector _data;
    };
    
    
    int main()
    {
        my_struct my(5, 6, 7, 8);
    
        for(int i : my.data())
          std::cout << i << std::endl;
    }
    

提交回复
热议问题