为什么不std::initializer_list
支持std::get<>
和?它现在在表达式中被大量使用,例如,std::tuple_size
std::tuple_element
constexpr
std::max({1, 2, 3, 4, 5});
如果它确实像下面这样很酷的事情是可能的
auto [x, y] = {1, 2};
那么为什么不std::initializer_list
支持这些呢?据我所知,没有办法std::initializer_list
在运行时构造 a ,因此大小始终由用户固定。
下面是一个如何std::intializer_list<>
在编译时获取大小的示例
#include <iostream>
#include <initializer_list>
using std::cout;
using std::endl;
template <typename...> struct WhichType;
template <typename Type>
constexpr int size_init_list(std::initializer_list<Type> il) {
return il.end() - il.begin();
}
int main() {
constexpr auto size = size_init_list({1, 2, 3});
cout << static_cast<int>(std::integral_constant<int, size>{}) << endl;
return 0;
}