I tend to believe that the U(U&&) case in the example is a GCC bug. It shall be noexcept also.
- why? user-defined destructor prevents the move ctor, and copy ctor generation (which is deprecated in this case) produces noexcept(false) because it has to call vector's copy ctor. If you default U(U&&), you get a "true" there. --Cubbi (talk) 11:09, 20 April 2014 (PDT)