The rules for using this can be changed as a result of a problem with the 1207 base language , for another reason, but in some way that also affects noexcept expressions.
Before (after C ++ 03, but when C ++ 11 was still being written), this not allowed to use functions outside the body. The noexcept expression noexcept not part of the body, so this cannot be used.
After this can be used somewhere after cv-qualifier-seq, and after that noexcept expressions will appear, as the code in your question clearly shows.
It seems that the GCC implementation of this problem is incomplete and only allows member functions to return return function types, but the standard has discovered more than that. I recommend reporting this as an error (if it has not previously been reported). This is reported in GCC bugzilla as error 52869 .
Whatever the cost, clang accepts code in C ++ 11 mode.
hvd source share