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

How can I initialize a vector in the initializer list of a varargs constructor?

本文关键字:初始化 列表 向量 构造函数 变参 参数      更新时间:2023-10-16

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

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

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

我需要用va_list中的条形结构初始化v。我该怎么做呢?

你不能。将Foo改为可变模板:

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

使用vector的初始化列表构造函数