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

            Bug ID: 115778
           Summary: Internal compiler error: in keep_template_parm, at
                    cp/pt.cc:10960
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: s.murthy at outlook dot com
  Target Milestone: ---

I stumbled on this ICE in GCC trunk currently deployed on Compiler Explorer.
Probably not a concern because the issue is seen in trunk, but reporting it
because the compiler output asks to, and I don't this issue in the bug
database.

--version outputs:

"g++
(Compiler-Explorer-Build-gcc-751982484b50f3fcf54235683fb4c76dd6426d92-binutils-2.42)
15.0.0 20240703 (experimental)"

The same code has no error in GCC 14.1.

Repro (see: https://sigcpp.godbolt.org/z/PhnG9oK47)
---------------------------------------------------
#include <concepts>
#include <type_traits>

template<bool B = false, std::unsigned_integral N = unsigned> 
class dv{}; //error goes away if you remove template param B

template<std::unsigned_integral U = unsigned,
         template <bool, std::unsigned_integral> class V = dv
        >
struct C {
    U u{};

    C(std::signed_integral auto){}
};

template <std::signed_integral SI>
C(SI) -> C<std::make_unsigned_t<SI>>; //ICE here

Reply via email to