如何在可变参数构造函数的初始化列表中初始化一个向量?

3

我需要详细说明以下类的构造函数:

class Foo {
public:
    const std::vector<Bar> bars;
    Foo(int num_bars, ...);
}

为了讨论方便,假设额外的参数都是const Bar&或者只是Bar

我需要在构造时使用va_list中的bars来初始化v。我该怎么做?

1个回答

5
您无法这样做,需要将Foo改为变参模板:

template <typename ...ArgumentTypes>
Foo(ArgumentTypes&& args...):
bars({std::forward<ArgumentTypes>(args)...})
{
}

这里使用了vector的初始化列表构造函数。


在你的例子中,双引用符号代表什么意思?是否涉及某种移动操作? - einpoklum
1
@einpoklum 这被称为通用引用。它利用了新的引用折叠规则,以确保构造函数可以绑定到左值和右值。std::forward 确保输入的左值/右值性正确地转发到下一个函数。 - Pradhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接