Условия для aggregate . Класс array опирается на неявно объявленные специальные функции - члены ([class.ctor], [class.dtor]и [class.copy]) , чтобы соответствовать требованиям таблицы контейнера в [container.requirements]. В дополнение к требованиям, указанным в таблице требований к контейнеру, неявный конструктор перемещения и оператор присваивания перемещения для array require that T be MoveConstructible или MoveAssignable, соответственно.
template<class T, class... U>
array(T, U...) -> array<T, 1 + sizeof...(U)>;