[Bug c++/67164] ICE: tree check:=?UTF-8?Q?=20expected=20class=20=E2=80=98expression=E2=80=99?=,=?UTF-8?Q?=20have=20=E2=80=98exceptional=E2=80=99=20?=(argument_pack_select) in tree_operand_check, at tree.h:3356
ldionne.2 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Aug 27 19:53:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164
--- Comment #4 from Louis Dionne <ldionne.2 at gmail dot com> ---
Still fails on trunk. Out of curiosity Markus, do you use software to reduce
test cases? Did you generate these A, B, ... structs yourself?
Anyway, I was able to reduce to the following:
------------------------------------------------------------------------------
template <typename T>
T declval();
template <typename ...>
struct expand;
template <typename ...Xn>
struct closure {
closure();
template <typename ...Yn, typename = expand<
decltype(Xn(declval<Yn>()))...
>>
closure(Yn ...);
template <typename ...Yn>
closure(closure<Yn...>);
};
int main() {
closure<closure<>> empty{};
closure<closure<>> copy(empty);
}
------------------------------------------------------------------------------
The command line and output (formatted to fit the report) are:
------------------------------------------------------------------------------
> ~/code/gcc/prefix/bin/g++ --version
g++ (GCC) 6.0.0 20150827 (experimental)
> ~/code/gcc/prefix/bin/g++ -std=c++14 test/worksheet.cpp
test/worksheet.cpp: In substitution of ‘
template<class ... Yn>
closure<Xn>::closure(closure<Yn ...>) [with Yn = <missing>]’:
test/worksheet.cpp:1573:31: required by substitution of ‘
template<class ... Yn, class>
closure<Xn>::closure(Yn ...) [with Yn = closure<closure<> >;
<template-parameter-1-2> = <missing>]’
test/worksheet.cpp:1584:34: required from here
test/worksheet.cpp:1573:31: internal compiler error:
tree check: expected class ‘expression’, have ‘exceptional’
(argument_pack_select) in tree_operand_check, at tree.h:3356
template <typename ...Yn, typename = expand<
^
------------------------------------------------------------------------------
More information about the Gcc-bugs
mailing list