我正在包装形式为
的C ++ fnfoo(input, std::initializer_list<Option> options);
我需要从另一种格式的数据构造一个选项列表,并将它们传递到foo
中。 I can't see一种以编程方式构造std::initializer_list
的方式–是这样吗? (如果有人被迫使用一个更标准的容器,这是有道理的,但是我想在重构之前进行检查。)
答案 0 :(得分:6)
标准C ++中没有办法。 std::initializer_list
是一种语言支持类型。它的存在使我们可以使用一种语言构造(列表初始化)。
因此,只有实现才能创建它们,并且仅在执行列表初始化时才需要实现。您的实现可能会提供允许其创建的扩展,但不太可能生成标准代码。
答案 1 :(得分:0)
void test() {
double d1 = 1.1;
double d2 = 2.2;
double d3 = 3.3;
std::initializer_list<int> init_list{ static_cast<int>(d1), static_cast<int>(d2), static_cast<int>(d3) };
}
可以,但是仅适用于固定大小的列表。