Это продолжение моего предыдущего вопроса Каков порядок уничтожения аргументов функции?, потому что я случайно путал аргументы с параметрами. Благодаря Columbo и T.C. для освобождения меня от терминологической путаницы в комментариях к этому вопросу.
Если тело некоторой функции f
с параметрами p_1
,..., p_n
типов T_1
,..., T_n
соответственно выдает исключение, заканчивает или возвращает, в каком порядке разрушаются параметры и почему? Пожалуйста, предоставьте ссылку на стандарт, если это возможно.
Примеры:
template <typename ... Args>
void f(Args ... params) {} // in what order are params destroyed?
void f(T1 p1, T2 p2, T3 p3) {} // in what order are p1, p2 and p3 destroyed?