phi*_*ipp 2 c++ templates variadic-templates c++11 stdtuple
我的问题是关于参数包和相关元组.如何创建与参数包相同大小的元组,但是使用单个独立类型?
template <class... T>
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<T...> m_tuple;
// now I want a tuple of N values of type HelperData, where N is sizeof...(T)
std::tuple<HelperData...sizeof...(T)> m_helperData; //???
};
Run Code Online (Sandbox Code Playgroud)
回顾性评论:
这个问题可能在技术上有效并且有很好的答案.但是潜在的概念提出了越来越多的问题(如何一次迭代多个容器等).使用C++ 14或更新版本可能是正确的选择,但是,我发现使用C++ 11时,当我解决问题时,事情会变得非常容易:
我有一个类型/对象列表,由参数包表示.这将主元组定义为类成员.现在我想要为这些类型/对象中的每一个存储在附加元组中的附加信息.不要那样做.这个结构可以(几乎)总是被单个元组替换,包含例如具有所有元素的结构,否则这些元素分布在多个元组中.
您需要挂钩参数包以启用扩展,然后忽略它:
// ...
template <class T, class>
using hook = T;
std::tuple<hook<HelperData, T>...> m_helperData;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |