gpt4 book ai didi

c++ - 括号序列的类型

转载 作者:行者123 更新时间:2023-11-27 22:42:49 25 4
gpt4 key购买 nike

让我们考虑以下代码:

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> ? (其中 Tintstd::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 进行初始化。

关于c++ - 括号序列的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47015123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com