вчера вечером(почти ночью) мельком посмотрел, сегодня мнение такое:
0. нам тут плевать кто и сколько чего будет документировать))))
1. задача поставлена не конкретно, непонятно почему игнорируются Tag иногда и т.д., если разобраться конечно можно прийти к выводу, что типо только шаблонные аргументы вставляются, но я бы сделал это ошибкой просто напросто наверное.... Ну это уже от требований зависит.
2. 1 конечно гораздо понятнее, Во 2 можно сделать ещё пустую
template<typename...>
struct s;
чтобы все остальные были специализациями и тогда гораздо легче прочитать становится какой случай какая специализирует