在 C++ 中是否可以创建可变长度的 initializer_list?
例如:
std::list<string> mylist { somemagic (listSize, "default") };
或者:
QList<MyClass> anotherList { somemagic (listSize, {MyClassInitializerHere} ) };
最佳答案
不,initializer_list
只能从 braced-init-list {el1, el2, ...}
创建,其长度必须是编译时常量。
如果长度是一个编译时常量,那么您可以从 std::index_sequence
的可变参数扩展构造一个花括号初始化列表;然而,使用 std::list
的填充构造函数可能更直接:
std::list<string> mylist(listSize, "default");
您可以通过利用 fromStdList
构造函数对 QList
执行相同的操作:
QList<string> mylist = QList<string>::fromStdList(
std::list<string>(listSize, "default"));
关于c++ - 变长初始化器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676852/