Ответ 1
В расширении пакета шаблон, предшествующий значению ...
, повторяется для каждого элемента пакета, поэтому vector<T>...
означает расширение в vector<T1>, vector<T2>, vector<T3>
, тогда как vector<T...>
означает расширение в vector<T1, T2, T3>
Если пакет параметров имеет только один элемент, они одинаковы, но рассмотрим, есть ли в пакете параметров два элемента, должно быть очевидно, что
std::vector<std::vector<T1>, std::vector<T2>>
и
std::vector<std::vector<T1, T2>>
не совпадают. Первый не будет компилироваться, вторым параметром шаблона для std::vector
должен быть тип распределителя, а не вектор. Второй будет компилироваться, если T2
- тип распределителя.