Предположим, у меня есть следующая функция:
void foo(std::vector<int> vec, int n);
Если я вызываю функцию типа this:
std::vector<int> numbers { 2, 3, 5, 7, 11, 13, 17, 19 };
foo(std::move(numbers), numbers[0]);
Полностью ли вычислены все аргументы до их привязки к параметрам? В этом случае std::move
безвредна, так как она просто дает значение x, относящееся к числам . Или каждый отдельный аргумент может быть немедленно привязан к своему параметру, как только он будет вычислен? В этом случае
числа[0]
могли бы привести к неопределенному поведению, поскольку числа
уже могли быть перемещены в vec
.