Ответ 1
Это было добавлено в спецификацию для согласованности, а также потому, что будущее атрибутов все еще обсуждается. Учитывая, что в настоящее время у нас есть расширение пакета в вариативных шаблонах (см. Расширение пакета шаблонов Variadic), например:
// pack expansion in function arguments
template <typename... Args>
void f(Args... args) {}
// pack expansion in inheritance
template <typename... Inherited>
struct MyClass : Inherited... {};
В то же время имеет смысл подумать о расширении пакета для атрибутов. Несколько сценариев могут быть:
template <typename... Ts>
class [[Ts...]] MyClass {};
или же
template <typename... Ts>
class [[Ts()...]] MyClass {};
Но, опять же, это только в спецификации, и в настоящее время нет атрибута, который можно использовать как это.