3
我需要闡述以下類的構造函數:如何在可變參數構造函數的初始化程序列表中初始化一個向量?
class Foo {
public:
const std::vector<Bar> bars;
Foo(int num_bars, ...);
}
承擔就事論事,額外的參數都是const Bar&
或只是Bar
。
我需要使用va_list中的條來初始化v。我怎樣才能做到這一點?
我需要闡述以下類的構造函數:如何在可變參數構造函數的初始化程序列表中初始化一個向量?
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)...})
{
}
本採用矢量的初始化列表構造。
你的例子中的雙參考符號是什麼意思?是否存在某種移動? – einpoklum
@einpoklum它被稱爲通用參考。它利用新的引用崩潰規則來確保構造函數可以綁定到左值和右值。 'std :: forward'確保輸入的左值/右值被正確地轉發到下一個函數。 – Pradhan