[Bug c++/88795] New: ICE on class-template argument deduction if non-type parameter has indirection
programmer at posteo dot de
gcc-bugzilla@gcc.gnu.org
Thu Jan 10 15:44:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88795
Bug ID: 88795
Summary: ICE on class-template argument deduction if non-type
parameter has indirection
Product: gcc
Version: 7.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: programmer at posteo dot de
Target Milestone: ---
The following code (compiled with g++ -std=c++17 -Wall -Wextra) causes an
internal compiler error (ICE) with all GCC versions on godbolt starting from
7.1. Clang compiles fine.
// CODE START
template<class, int>
struct Array {};
template<class T, int size_>
struct Foo {
static constexpr int size() {
return size_;// this indirection causes the ICE
}
template<class U>
Foo(U, Array<T, size()>) {}
};
template<class T, int size, class U>
Foo(U, Array<T, size>) -> Foo<T, size>;
int main() {
Array<int, 2> arr{};
Foo foo{2.0, arr};
}
// CODE END
Below I post the error messages from godbolt in order to make it easier to find
this report. See also https://godbolt.org/z/Nb-3YM
GCC 9.0.0 20190109: internal compiler error: tree check: expected tree_list,
have error_mark in type_hash_canon_hash, at tree.c:6811
GCC 8.2.0: internal compiler error: in type_unification_real, at cp/pt.c:20206
GCC 8.1.0: internal compiler error: in type_unification_real, at cp/pt.c:20148
[...] mmap: Invalid argument
GCC 7.4.0: internal compiler error: in type_unification_real, at cp/pt.c:19294
GCC 7.3.0: internal compiler error: in type_unification_real, at cp/pt.c:19239
[...] mmap: Invalid argument
GCC 7.2.0: internal compiler error: in type_unification_real, at cp/pt.c:19209
[...] mmap: Invalid argument
GCC 7.1.0: internal compiler error: in type_unification_real, at cp/pt.c:19127
[...] mmap: Invalid argument
More information about the Gcc-bugs
mailing list