https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66256

Michael Mehlich <mmehlich at semanticdesigns dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mmehlich at semanticdesigns 
dot co
                   |                            |m

--- Comment #1 from Michael Mehlich <mmehlich at semanticdesigns dot com> ---
I agree, name resolution should consider all declarations in the class,
but apparently gcc does name resolution on the exception specification way too
early.

An example where this causes no error message being created for obviously wrong
code is the swap function in the pair template in the header file
bits/stl_pair.h (for gcc 5.3.0/cygwin), which is declared as
      void
      swap(pair& __p)
      noexcept(noexcept(swap(first, __p.first))
               && noexcept(swap(second, __p.second)))

clang 3.7.1. properly reports an error for the swap in the exception
specification.
BTW: The header file could be fixed easily by adding std:: in front of these
swap occurrences.

Reply via email to