Отслеживается ли привязка параметров после вычисления аргумента?

Предположим, у меня есть следующая функция:

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.

13
задан David Rodríguez - dribeas 29 August 2011 в 11:23
поделиться