我希望能够将一个可变类型列表“实体化”为相关值的initializer_list。
例如,将包含多个std::integral_constant的std::tuple转换为std::initializer_list{...}。
一般情况下,我想要获取某些复杂类型的initializer_list,例如std::string。
但是,以下简单示例在Clang编译时会导致崩溃(尽管在Coliru上使用GCC可以正常工作),因此我怀疑存在未定义行为(或Clang中的错误)。
但是,以下简单示例在Clang编译时会导致崩溃(尽管在Coliru上使用GCC可以正常工作),因此我怀疑存在未定义行为(或Clang中的错误)。
template <class... Ts>
std::initializer_list<const std::string> materialize()
{
return {
std::to_string(Ts::value)...
};
}
void print_out()
{
for (const auto & x : materialize<std::true_type, std::false_type>()) {
std::cout << x << "\n";
}
}
那么,这样的代码在C++11/14/17中是否合法?
std::initializer_list
实例。 - lubgr