[Bug c++/87765] New: Internal compiler error: coerce_template_parms (8.2) or cxx_eval_constant_expression (trunk)
curlypaul924 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Oct 26 19:29:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87765
Bug ID: 87765
Summary: Internal compiler error: coerce_template_parms (8.2)
or cxx_eval_constant_expression (trunk)
Product: gcc
Version: 8.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: curlypaul924 at gmail dot com
Target Milestone: ---
The following syntactically valid program produces an ICE in
coerce_template_parms on gcc 8.2:
template <int N>
using foo = int;
struct A {
constexpr int bar() const { return 42; }
};
void baz(A a) {
[=](auto c) { return foo<a.bar()> { }; };
}
creduce produced a syntactically invalid program which also causes ICE:
template <int N>
using foo = int;
struct A {
int bar();
};
void baz(A a) {
[](auto foo<a.bar()>
}
x86-64 gcc trunk on godbolt.org also ICEs, but in cxx_eval_constant_expression.
Clang accepts the first snippet, but gcc 7.3 rejects it with "error:
'__closure' is not a constant expression".
Possibly related to (or duplicate of) Bug 86960.
More information about the Gcc-bugs
mailing list