作者:Peter-周周周成德 | 来源:互联网 | 2022-12-02 15:09
我的问题是关于参数包和相关元组.如何创建与参数包相同大小的元组,但是使用单个独立类型?
template
class Thing {
public:
// some struct that was found helpful for any Type used as parameter
struct HelperData{
int a;
int b;
};
[...]
private:
// the tuple used as normally, my initial reason to use parameter pack
std::tuple m_tuple;
// now I want a tuple of N values of type HelperData, where N is sizeof...(T)
std::tuple m_helperData; //???
};
回顾性评论:
这个问题可能在技术上有效并且有很好的答案.但是潜在的概念提出了越来越多的问题(如何一次迭代多个容器等).使用C++ 14或更新版本可能是正确的选择,但是,我发现使用C++ 11时,当我解决问题时,事情会变得非常容易:
我有一个类型/对象列表,由参数包表示.这将主元组定义为类成员.现在我想要为这些类型/对象中的每一个存储在附加元组中的附加信息.不要那样做.这个结构可以(几乎)总是被单个元组替换,包含例如具有所有元素的结构,否则这些元素分布在多个元组中.
1> Quentin..:
您需要挂钩参数包以启用扩展,然后忽略它:
// ...
template
using hook = T;
std::tuple...> m_helperData;
或者`template
使用HelperData_t = HelperData;`然后`std :: tuple ...>`不那么抽象.