为什么我不能像使用“普通”变量一样使用使用“initializer_list”分配的变量?
代码:
void stovr(int a){}
int main() {
auto v {5}; // v is std::initializer_list<int>
stovr(v); // cannot convert 'std::initializer_list<int>' to 'int'
}
- 为什么没有隐式转换?(编辑:因为
v
是列表) - 为什么
v
是list
而不是int
?
auto
解析。现在使用auto v {5};
会将v
声明为一个int
类型。 - user743382initializer_list<T>
到T
的转换将是“新手”更糟糕错误的另一个来源。这就像通过砍掉头来治疗头痛一样。 - juanchopanzaauto v{5}
必须是int
)) - Person.Junkie