我在玩 Leetcode 的时候偶然发现了这个有趣的技巧。简而言之:
#include <iostream>
#include <vector>
void print(std::vector<int>& vec)
{
for (int i : vec)
{
std::cout << i << ", ";
}
}
int main()
{
print(std::vector<int>(5) = {1,2,3,4,5});
return 0;
}
我们似乎将右值传递给了左值引用,这通常是非法的,但在这个特定情况下,它却以某种方式起作用了。有什么解释吗,或者我可能遗漏了什么?