假设我有以下功能:
void foo(std::vector<int> vec, int n);
如果我这样调用函数:
std::vector<int> numbers { 2, 3, 5, 7, 11, 13, 17, 19 };
foo(std::move(numbers), numbers[0]);
在绑定到参数之前,是否所有参数都已完全评估?在这种情况下,std::move
是无害的,因为它只产生一个引用 的 xvalue numbers
。或者每个单独的参数是否可以在评估后立即绑定到它的参数?在这种情况下,numbers[0]
可能会导致未定义的行为,因为numbers
可能已经被移入vec
.