Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SimpleRowFormatter.h: fix the build on gcc-15 (unsatisfied noexcept) #4702

Merged
merged 1 commit into from
Sep 20, 2024
Merged

SimpleRowFormatter.h: fix the build on gcc-15 (unsatisfied noexcept) #4702

merged 1 commit into from
Sep 20, 2024

Conversation

trofi
Copy link
Contributor

@trofi trofi commented Sep 19, 2024

On today's gcc-15 poco fails to build as:

In file included from /build/source/Data/include/Poco/Data/Statement.h:27,
                 from /build/source/Data/include/Poco/Data/Session.h:23,
                 from /build/source/Data/include/Poco/Data/ArchiveStrategy.h:22,
                 from /build/source/Data/src/ArchiveStrategy.cpp:15:
/build/source/Data/include/Poco/Data/SimpleRowFormatter.h:114:21: error: declaration of 'std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_construc
tible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) noexcept [with _Tp = Poco::Data::SimpleRowFormatter; _Require<__not_<__is_tuple_like<_Tp> >, is_move_constructible<_Tp>, is_move_assignable<_Tp> > = void]' has a different exception specifier
  114 |         inline void swap<Poco::Data::SimpleRowFormatter>(Poco::Data::SimpleRowFormatter& s1,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/new_allocator.h:36,
                 from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/x86_64-unknown-linux-gnu/bits/c++allocator.h:33,
                 from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/allocator.h:46,
                 from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/string:43,
                 from /build/source/Foundation/include/Poco/Foundation.h:94,
                 from /build/source/Data/include/Poco/Data/Data.h:23,
                 from /build/source/Data/include/Poco/Data/ArchiveStrategy.h:21:
/nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/move.h:214:5: note: from previous declaration 'std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) noexcept (false) [with _Tp = Poco::Data::SimpleRowFormatter; _Require<__not_<__is_tuple_like<_Tp> >, is_move_constructible<_Tp>, is_move_assignable<_Tp> > = void]'
  214 |     swap(_Tp& __a, _Tp& __b)
      |     ^~~~

Possibly because SimpleRowFormatter does not have constructors and assignment operators that involve rvalue references?

Dropped noexcept. Fixes the build on gcc-15. Still compiled on gcc-13.

On today's `gcc-15` poco fails to build as:

    In file included from /build/source/Data/include/Poco/Data/Statement.h:27,
                     from /build/source/Data/include/Poco/Data/Session.h:23,
                     from /build/source/Data/include/Poco/Data/ArchiveStrategy.h:22,
                     from /build/source/Data/src/ArchiveStrategy.cpp:15:
    /build/source/Data/include/Poco/Data/SimpleRowFormatter.h:114:21: error: declaration of 'std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_construc
    tible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) noexcept [with _Tp = Poco::Data::SimpleRowFormatter; _Require<__not_<__is_tuple_like<_Tp> >, is_move_constructible<_Tp>, is_move_assignable<_Tp> > = void]' has a different exception specifier
      114 |         inline void swap<Poco::Data::SimpleRowFormatter>(Poco::Data::SimpleRowFormatter& s1,
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/new_allocator.h:36,
                     from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/x86_64-unknown-linux-gnu/bits/c++allocator.h:33,
                     from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/allocator.h:46,
                     from /nix/store/...-gcc-15.0.0/include/c++/15.0.0/string:43,
                     from /build/source/Foundation/include/Poco/Foundation.h:94,
                     from /build/source/Data/include/Poco/Data/Data.h:23,
                     from /build/source/Data/include/Poco/Data/ArchiveStrategy.h:21:
    /nix/store/...-gcc-15.0.0/include/c++/15.0.0/bits/move.h:214:5: note: from previous declaration 'std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) noexcept (false) [with _Tp = Poco::Data::SimpleRowFormatter; _Require<__not_<__is_tuple_like<_Tp> >, is_move_constructible<_Tp>, is_move_assignable<_Tp> > = void]'
      214 |     swap(_Tp& __a, _Tp& __b)
          |     ^~~~

Possibly because `SimpleRowFormatter` does not have constructors and
assignment operators that involve rvalue references?

Updated `noexcept` condition. Fixes the build on` gcc-15`. Still
compiles on `gcc-13`.
@matejk matejk added this to the Release 1.14.0 milestone Sep 20, 2024
@matejk matejk merged commit 03c35cf into pocoproject:main Sep 20, 2024
43 checks passed
@trofi trofi deleted the gcc-15-tweak branch September 20, 2024 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants