在How to pass an initializer list as a function argument?的答案中,我看到了表达式:
return WaitForMultipleObjects(
handles.size(), &*handles.begin(), wait_all, time
);
&*
的重点是什么?没有它,电话会有相同的含义吗?
答案 0 :(得分:5)
container.begin()
返回迭代器&*container.begin()
会返回一个指针WaitForMultipleObjects
需要HANDLE const*
特别是对于std::initializer_list<>
,迭代器被定义为是指针;但是A)这不能推广到其他容器类型,B)标准库实现经常在调试版本中使用已检查的迭代器,这些迭代器必然是UDT。
对于您链接的特定答案,&*
不是必要的,因为它专门使用std::initializer_list<>
;但是,如果wait_for_multiple_objects
取而代之的是std::array<>
或std::vector<>
,或者如果它被制作成可以接受任何随机访问容器的函数模板,那么确实是必要的。