如何从一个c ++元组中获取Args ...

时间:2016-06-10 05:32:59

标签: c++ templates tuples

我有一个接受可变参数模板参数的模板类。

template <typename... Args>
class Element
{
public:
    typedef std::tuple<Args...> Tuple;

    Element(const Args&... args)
         : mArgs(args...)
    {
    }

    Tuple mArgs;
};

是否有可能从元组中获取Args ...以及如何?

所以我能够为这样的情况使用相同的构造函数:

Element<Foo, Bar> element1(foo, bar);
Element<Foo, Bar> element2( magic(element1.mArgs) );

2 个答案:

答案 0 :(得分:0)

只需编写一个完全符合您要求的复制构造函数吗?

请注意,编译器生成的复制构造函数已经允许这样:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

答案 1 :(得分:0)

我相信没有办法完全你想要什么。为此,您需要magic来返回参数包。但是,参数包可能只出现在可变参数模板的上下文中。所以你需要制作一些可变参数模板包装来提供包,这不是你想要的。

但是,我们有机会在这里XY problem。因此,我建议您提供更多详细信息,以便我们可以尝试解决原始问题。