【发布时间】:2016-07-29 16:36:46
【问题描述】:
我已经阅读了this、this、this 和许多其他内容......但这些帖子都没有回答或适用于我的具体问题。
我有一个带有可变参数模板构造函数的结构 X:
struct X
{
template<typename... T>
X(T... t) { /*...*/ }
};
我有一个结构Y,它包含两个X 类型的对象。我想为Y 定义一个模板构造函数,允许使用不同的参数列表正确初始化X 类型的两个成员,即看起来像下面的代码(显然不起作用):
struct Y
{
template<typename... U, typename... V>
Y(U&&... u, V&&... v) // this does not work
: x1(std::forward(u)...), x2(std::forward(v)...) // this is was I need to do
{}
X x1, x2;
};
如何使用包装器、元组或任何合适的元编程机制来做到这一点?可以接受 C++14 解决方案。
【问题讨论】:
-
@πάντα ῥεῖ:我要的是 C++14;您链接的问题可能是我的问题的合适解决方案,但它已有 2 年历史了!也许有一个更好的使用 C++14。
-
我不太确定 C++14 对 VTP 的解包有多大的改变,但是...
-
@πάντα ῥεῖ:你不确定?我很确定 C++14 为解包元组添加了一些有趣的新特性......
-
哦,你现在重新标记了这个问题,所以我不能单枪匹马地重新打开它,抱歉。但这提供了重新开放至少得到其他 4 人确认的机会。给您点赞,以吸引更多评论者。
-
@πάνταῥεῖ 我投票决定重新开放,因为我认为问题和答案充其量是令人困惑的。
标签: c++ c++14 variadic-templates