https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107332
Bug ID: 107332 Summary: internal compiler error: in tsubst_copy, at cp/pt.c:15751 Product: gcc Version: 9.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dreamcooled at gmail dot com Target Milestone: --- I'm getting an ICE when compiling the following program on x86-64 gcc 9.5. Tried it on godbolt.org with -std=c++17 command line options. The bug seems to be fixed in > gcc 10. #include <type_traits> template <typename T> void Invoke() { auto f = [](auto stateIdIntegralConstant) { if constexpr (std::integral_constant<std::size_t,stateIdIntegralConstant>() == 0) { } }; f(std::integral_constant<std::size_t, 0>{}); } int main() { Invoke<int>(); } Compiler output: <source>: In instantiation of 'Invoke() [with T = int]::<lambda(auto:1)> [with auto:1 = std::integral_constant<long unsigned int, 0>]': <source>:10:6: required from 'void Invoke() [with T = int]' <source>:15:16: required from here <source>:6:28: internal compiler error: in tsubst_copy, at cp/pt.c:15751 6 | if constexpr (std::integral_constant<std::size_t,stateIdIntegralConstant>() == 0) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 I see there are possible duplicates of this bug, but all are in state resolved/fixed and I'm not sure if it is really the same bug. If it is the same bug, I was hoping that the fix could be backported to gcc 9, since I'm using only standard c++17 without any experimental features... Thank You.