括号序列的类型
The type of a bracketed sequence
让我们考虑以下代码:
for(std::size_t j : {0,1,2,3,4,5,6,7})
{
// do something with j
}
编译器为序列 {0,1,2,3,4,5,6,7}
创建的基础类型是什么?
会是 std::vector<T>
和 std::array<T, 8>
还是 std::initializer_list<T>
? (其中 T
是 int
或 std::size_t
)。
我不认为这是 Ranged for loop with literal list? 的重复,因为我特别想知道用于迭代的变量类型(std::size_t
在这种情况下)的情况std::initializer_list<int>
是否会影响编译器。
I specifically would like to know about the situation whether the type std::size_t of the varibale used to iterate over the std::initializer_list will influence the compiler or not
不会。标准指定的 equivalent 语句,以及您链接到的问题,以如下内容结束:
auto && __range = {0,1,2,3,4,5,6,7};
//...
for(/*...*/) {
std::size j = *__begin;
// ...
}
没有明确要求j
影响__range
的推导,根据范围的一般规则也不应该。 j
将仅使用转换后的 int
.
进行初始化
让我们考虑以下代码:
for(std::size_t j : {0,1,2,3,4,5,6,7})
{
// do something with j
}
编译器为序列 {0,1,2,3,4,5,6,7}
创建的基础类型是什么?
会是 std::vector<T>
和 std::array<T, 8>
还是 std::initializer_list<T>
? (其中 T
是 int
或 std::size_t
)。
我不认为这是 Ranged for loop with literal list? 的重复,因为我特别想知道用于迭代的变量类型(std::size_t
在这种情况下)的情况std::initializer_list<int>
是否会影响编译器。
I specifically would like to know about the situation whether the type std::size_t of the varibale used to iterate over the std::initializer_list will influence the compiler or not
不会。标准指定的 equivalent 语句,以及您链接到的问题,以如下内容结束:
auto && __range = {0,1,2,3,4,5,6,7};
//...
for(/*...*/) {
std::size j = *__begin;
// ...
}
没有明确要求j
影响__range
的推导,根据范围的一般规则也不应该。 j
将仅使用转换后的 int
.