#1133613 qmc: ftbfs with GCC-16

Package:
src:qmc
Source:
src:qmc
Submitter:
Emanuele Rocca
Date:
2026-04-13 13:11:05 UTC
Severity:
normal
Tags:
#1133613#5
Date:
2026-04-13 13:10:14 UTC
From:
To:
Hi,

qmc fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/qmc_arm64.build.xz

The last lines of the build log are at the end of this report.

To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.

[...]


            107 |     cin >> expression_buffer;
                |            ^~~~~~~~~~~~~~~~~
    • candidate 26: ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&)’
      /usr/include/c++/16/istream:1112:5:
       1112 |     operator>>(_Istream&& __is, _Tp&& __x)
            |     ^~~~~~~~
      • template argument deduction/substitution failed:
        • /usr/include/c++/16/istream: In substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’:
        • required from here
          core.cc:107:12:
            107 |     cin >> expression_buffer;
                |            ^~~~~~~~~~~~~~~~~
        • error: template constraint failure for ‘template<class _Is, class _Tp>  requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using std::__rvalue_stream_extraction_t = _Is&&’
          /usr/include/c++/16/istream:1112:5:
           1112 |     operator>>(_Istream&& __is, _Tp&& __x)
                |     ^~~~~~~~
        • constraints not satisfied
          • /usr/include/c++/16/bits/ostream.h: In substitution of ‘template<class _Is, class _Tp>  requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using std::__rvalue_stream_extraction_t = _Is&& [with _Is = std::basic_istream<char>&; _Tp = char*&]’:
          • required by substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’
            /usr/include/c++/16/istream:1112:5:
          • required from here
            core.cc:107:12:
              107 |     cin >> expression_buffer;
                  |            ^~~~~~~~~~~~~~~~~
          • required for the satisfaction of ‘__derived_from_ios_base<_Is>’ [with _Is = std::basic_istream<char, std::char_traits<char> >&]
            /usr/include/c++/16/bits/ostream.h:803:13:
              803 |     concept __derived_from_ios_base = is_class_v<_Tp>
                  |             ^~~~~~~~~~~~~~~~~~~~~~~
          • the expression ‘is_class_v<_Tp> [with _Tp = std::basic_istream<char, std::char_traits<char> >&]’ evaluated to ‘false’
            /usr/include/c++/16/bits/ostream.h:803:39:
              803 |     concept __derived_from_ios_base = is_class_v<_Tp>
                  |                                       ^~~~~~~~~~~~~~~
          • ‘std::basic_istream<char>&’ is not a class
core.cc:182:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  182 |     verbose_msg("\nsyntax checked...", options);
      |                 ^~~~~~~~~~~~~~~~~~~~~
core.cc:206:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  206 |     verbose_msg("\nvariables assigned...", options);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~
core.cc:240:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  240 |     verbose_msg("\nstarting analyse function", options);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.cc:291:32: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  291 |       if( !(i%4) ) verbose_msg(".", options);
      |                                ^~~
core.cc:307:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  307 |     verbose_msg("\nrecalculating...", options);
      |                 ^~~~~~~~~~~~~~~~~~~~
core.cc:342:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  342 |   verbose_msg("\npreparing for comparison...", options);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.cc:386:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  386 |   verbose_msg("\nrunning comparison...\n", options);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
core.cc:412:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
  412 |   verbose_msg("\ngenerating output string...\n", options);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++
/usr/bin/aarch64-linux-gnu-ld.bfd: main.o: in function `main':
././main.cc:77:(.text.startup+0x78): undefined reference to `_Z4corePct'
collect2: error: ld returned 1 exit status
make[1]: *** [debian/rules:10: override_dh_auto_build] Error 1
make[1]: Leaving directory '/build/reproducible-path/qmc-0.94'
make: *** [debian/rules:7: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2