关于initializer_list的应用
正在看《C++Primer 5e》学习。C++11标准新加了一个用于处理不同数量实参的函数的方法,就是使用initializer_list类型的形参来做这个处理。
我凭着自己的理解写了一段简短程序进行验证。但是调用该函数的时候出现类型不匹配的错误:不能把int类型的“1”转换为initializer_list《int》类型。
请问我应该如何改写第15行函数调用处的代码?
还是说这个东西只能用于类类型的构造时使用(我注意到http://有一句话,“initializer_list对象只能用大括号{}初始化。”),我必须用{}花括号进行传参的时候才可以使用。像现在的写法因为是函数调用,用的小括号,不能被识别为initializer_list类型。
程序代码:
#include<stdio.h> #include<malloc.h> #include <initializer_list> int Max(std::initializer_list<int> a){ int max=*a.begin(); for(auto k:a){ if(k>max)max=k; printf("%d",k); } } int main() { printf("{%d}",Max(1,2,3,4)); return 0; }