[Bug c++/84796] New: ICE in a template parameter pack expansion
v.reshetnikov at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Mar 9 21:51:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84796
Bug ID: 84796
Summary: ICE in a template parameter pack expansion
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: v.reshetnikov at gmail dot com
Target Milestone: ---
The following C++ code causes an ICE in GCC 8.0.1 20180308 (tested with
https://godbolt.org/):
/************* SOURCE *************/
template<typename... T>
struct S {
template<T... n>
static void f() { }
};
int main(){
S<int>::f<0>();
}
/*********** END SOURCE ***********/
/************* OUTPUT *************/
<source>: In function 'int main()':
<source>:8:18: internal compiler error: tree check: accessed elt 1 of tree_vec
with 0 elts in tsubst_pack_expansion, at cp/pt.c:11743
S<int>::f<0>();
^
mmap: Invalid argument
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1
/*********** END OUTPUT ***********/
Looks like a regression: no ICE occurs with GCC 7.3, but the code is rejected
with an error (I believe, incorrectly):
/************* OUTPUT *************/
<source>: In function 'int main()':
<source>:8:18: error: no matching function for call to 'S<int>::f<0>()'
S<int>::f<0>();
^
<source>:4:17: note: candidate: template<T ...n> static void S<T>::f() [with T
...n = {n ...}; T = {int}]
static void f() { }
^
<source>:4:17: note: template argument deduction/substitution failed:
Compiler returned: 1
/*********** END OUTPUT ***********/
More information about the Gcc-bugs
mailing list