C ++ 14从可变参数模板创建向量

皮奥多

假设我有一个结构

struct A
{
   std::string name;
};

并希望编写一个从对象读取字段“名称”并将其返回为的函数std::vector<std::string>是否可以通过可变参数模板(或任何非迭代方法)来执行此操作。我的目标是这样的:

template<typename... Ts>
std::vector<std::string> function(Ts... ts)
{
    ...
}

在程序中:

    A a1, a2, a3, a4;
    function(a1, a2, a3, a4);

输出: {a1.name, a2.name, a3.name, a4.name}

逻辑资料

一个非常简单的扩展,可以在C ++ 11中使用:

template <typename ... Ts>
std::vector<std::string> function(Ts&& ... ts)
{
    return {std::forward<Ts>(ts).name...};
}

(无需转发参考)

发生的事情是,矢量是使用初始变量列表构造的,该初始变量列表从可变参数包构造的,同时为每个可变元素应用函数(成员访问运算符)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章