cir*_*314 2 c++ initializer-list c++11
在如何将初始化列表作为函数参数传递的答案中?,我看到了表达式:
return WaitForMultipleObjects(
handles.size(), &*handles.begin(), wait_all, time
);
Run Code Online (Sandbox Code Playgroud)
有什么意义&*呢?没有它,电话会有相同的含义吗?
container.begin()返回一个迭代器&*container.begin()返回一个指针WaitForMultipleObjects 期待一个 HANDLE const*对于std::initializer_list<>特别是,迭代器被定义为一个指针; 但是A)这不能推广到其他容器类型,而B)标准库实现经常在调试版本中使用已检查的迭代器,这些迭代器必然是UDT.
对于您链接到特定的回答,&*是不是因为它是专门使用必要的std::initializer_list<>; 但是,如果wait_for_multiple_objects改为使用std::array<>或std::vector<>,或者如果它被制作成可以采用任何随机访问容器的函数模板,那么确实是必要的.