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

[4.1.0] build failures "no match for 'operator='" and similar with gcc-14 #430

Open
olebole opened this issue Jul 30, 2024 · 0 comments
Open

Comments

@olebole
Copy link
Member

olebole commented Jul 30, 2024

I am just trying to build sopt 4.1.0 from source to update the Debian package (from 3.1.0). The compilation fails with errors like

In file included from /build/sopt-4.1.0+dfsg/cpp/sopt/../sopt/imaging_padmm.h:15,
                 from /build/sopt-4.1.0+dfsg/cpp/tests/reweighted.cc:6:
/build/sopt-4.1.0+dfsg/cpp/sopt/../sopt/relative_variation.h: In member function 'const sopt::RelativeVariation<TYPE>& sopt::RelativeVariation<TYPE>::name(const std::string&) const':
/build/sopt-4.1.0+dfsg/cpp/sopt/../sopt/relative_variation.h:44:13: error: no match for 'operator=' (operand types are 'const std::string' {aka 'const std::__cxx11::basic_string<char>'} and 'const std::string' {aka 'const std::__cxx11::basic_string<char>'})
   44 |     name_ = name;
      |             ^~~~
In file included from /usr/include/c++/14/string:54,
                 from /usr/include/catch2/interfaces/catch_interfaces_capture.hpp:11,
                 from /usr/include/catch2/benchmark/catch_benchmark.hpp:19,
                 from /usr/include/catch2/benchmark/catch_benchmark_all.hpp:24,
                 from /usr/include/catch2/catch_all.hpp:25,
                 from /build/sopt-4.1.0+dfsg/cpp/tests/reweighted.cc:1:
/usr/include/c++/14/bits/basic_string.h:817:7: note: candidate: 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' (near match)
  817 |       operator=(const basic_string& __str)
      |       ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:817:7: note:   passing 'const std::string*' {aka 'const std::__cxx11::basic_string<char>*'} as 'this' argument discards qualifiers
/usr/include/c++/14/bits/basic_string.h:858:7: note: candidate: 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator=(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' (near match)
  858 |       operator=(basic_string&& __str)
      |       ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:858:7: note:   conversion of argument 1 would be ill-formed:
/usr/include/c++/14/bits/basic_string.h:941:8: note: candidate: 'template<class _Tp> std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_If_sv<_Tp, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&> std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator=(const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]'
  941 |        operator=(const _Tp& __svt)
      |        ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:941:8: note:   template argument deduction/substitution failed:
In file included from /usr/include/catch2/internal/catch_move_and_forward.hpp:11,
                 from /usr/include/catch2/benchmark/catch_benchmark.hpp:16:
/usr/include/c++/14/type_traits: In substitution of 'template<bool _Cond, class _Tp> using std::enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::__cxx11::basic_string<char>&]':
/usr/include/c++/14/bits/basic_string.h:149:8:   required by substitution of 'template<class _CharT, class _Traits, class _Alloc> template<class _Tp, class _Res> using std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_If_sv = std::enable_if_t<((bool)std::__and_<std::is_convertible<const _Tp&, std::basic_string_view<_CharT, _Traits> >, std::__not_<std::is_convertible<const _Tp*, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>*> >, std::__not_<std::is_convertible<const _Tp&, const _CharT*> > >::value), _Res> [with _Tp = std::__cxx11::basic_string<char>; _Res = std::__cxx11::basic_string<char>&; _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]'
  149 |         using _If_sv = enable_if_t<
      |               ^~~~~~
/usr/include/c++/14/bits/basic_string.h:941:8:   required by substitution of 'template<class _Tp> std::__cxx11::basic_string<char>::_If_sv<_Tp, std::__cxx11::basic_string<char>&> std::__cxx11::basic_string<char>::operator=(const _Tp&) [with _Tp = std::__cxx11::basic_string<char>]'
  941 |        operator=(const _Tp& __svt)
      |        ^~~~~~~~
/build/sopt-4.1.0+dfsg/cpp/sopt/../sopt/relative_variation.h:44:13:   required from here
   44 |     name_ = name;
      |             ^~~~

Full build log is attached: sopt_4.1.0+dfsg-1_amd64.build.txt
The same problem was already reported for version 3.1.0 as Debian#1075526, with this build log.

As I am rather unexperienced with C++, I have no idea what that means. Can you help fixing this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant