http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49045

--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2011-05-18 
18:21:39 UTC ---
A workaround would be to use a forwarding function:

template<typename _Tp>
  void
  swap(_Tp&, _Tp&);

template<class T>
void __do_swap(T&& a,T&& b) { swap(a,b); }

template<typename _Tp, __SIZE_TYPE__ _Nm>
  void
  swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
  noexcept(noexcept(__do_swap(*__a, *__b)));

template<typename _Tp, __SIZE_TYPE__ _Nm>
  void
  swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
  noexcept(noexcept(__do_swap(*__a, *__b)))
  { }

Reply via email to