使用visual studio 2010中initializer_list模板时遇到的”坑“

来源:互联网 发布:当前网络不可用怎么办 编辑:程序博客网 时间:2024/06/16 18:47
由于visual studio2010对c++11不完整的支持,需要对下面c++11规范下的函数进行重构(老师的要求。。唉,说多了都是泪):
bool Parser::has_or(std::initializer_list<const char*> options){...}

vs2010中能够使用initializer_list模板,但是又不支持用列表方式初始化initializer_list的实例。为了尽量不破坏原有的函数接口,那就得以另一种方式初始化了。
于是查看头文件发现,vs10中的initializer_list模板仅定义了这样的初始化方式:
initializer_list(const _Elem *_First_arg, const _Elem *_Last_arg): _First(_First_arg), _Last(_Last_arg){ // construct with pointers} 


上述构造函数中定义了用两个常量指针分别初始化头尾两个迭代器。
然后就想到了用字符串数组初始化initializer_list对象:
const char* a[]={"aa","bb","cc"};initializer_list<const char*> ss(a,a+sizeof(a)/sizeof(char*));  

 就酱紫简要记录一下吧。