Наличие спецификатораnoexcept(x) в объявлении функции означает, что функция не металирования тогда и только тогда, когда x оценивает значение true.
noexcept(y) также может использоваться как оператор, оценивая значение true если y является небрасывающим выражением, и false если y может потенциально выбросить.
В сочетании это означает void foo() noexcept(noexcept(y)); означает: foo не бросает точно, когда y не бросает.
В данном случае вопроса, функция шаблон swap для массивов объявляются не метание, если и только если замена отдельных членов массивов не является бросанием, что имеет смысл.