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

            Bug ID: 77322
           Summary: [C++11] std::function::swap should be noexcept.
           Product: gcc
           Version: 6.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ralph.tandetzky at gmail dot com
  Target Milestone: ---

The C++11, C++14 and C++17 standard require, that
std::function<Signature>::swap() be noexcept. However, the following program
does not compile:

    #include <functional>

    int main()
    {
        std::function<void()> f;
        static_assert( noexcept( f.swap(f) ), "" );
    }

This is the error message:

main.cpp: In function 'int main()':
main.cpp:6:5: error: static assertion failed
     static_assert( noexcept( f.swap(f) ), "" );
     ^~~~~~~~~~~~~

By the way, clang does it right. This bug should be very simple to fix. This
concerns all GCC versions that support C++11 from version 4.7 (or maybe
earlier) until 6.1 (or maybe later).

Reply via email to