https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68309
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-11-12 CC| |trippels at gcc dot gnu.org Version|4.9.1 |6.0 Summary|[C++14] Expanding a |[5/6 Regression] ICE: |captured parameter pack |Segmentation fault |with | |std::forward<decltype(args) | |>(args) fails. | Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 /tmp % cat f.cpp #include <initializer_list> #include <utility> using namespace std; template <typename... Ts> void print(Ts... args) { [&] { auto _ = {forward<decltype(args)>(args)...}; }; } int main() { print(5.2); } markus@x4 /tmp % g++ -std=c++14 -c f.cpp f.cpp: In instantiation of ‘print(Ts ...)::<lambda()> [with Ts = {double}]’: f.cpp:5:43: required from ‘struct print(Ts ...) [with Ts = {double}]::<lambda()>’ f.cpp:5:3: required from ‘void print(Ts ...) [with Ts = {double}]’ f.cpp:7:23: required from here f.cpp:5:51: internal compiler error: Segmentation fault [&] { auto _ = {forward<decltype(args)>(args)...}; }; ^ 0xcbe5cf crash_signal ../../gcc/gcc/toplev.c:336 0x7fd9373268af ??? /home/markus/glibc/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0x621cea maybe_adjust_types_for_deduction ../../gcc/gcc/cp/pt.c:17717 0x66dc29 unify ../../gcc/gcc/cp/pt.c:19189 0x669fe5 unify_one_argument ../../gcc/gcc/cp/pt.c:18020 0x66c6bb type_unification_real ../../gcc/gcc/cp/pt.c:18091 0x67f453 do_auto_deduction(tree_node*, tree_node*, tree_node*, int, auto_deduction_context) ../../gcc/gcc/cp/pt.c:23679 0x610954 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ../../gcc/gcc/cp/decl.c:6544 0x643e58 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15006 0x6405d3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15080 0x6400e4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14894 0x6405d3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15080 0x63e097 instantiate_decl(tree_node*, int, bool) ../../gcc/gcc/cp/pt.c:21736 0x6818cf instantiate_class_template_1 ../../gcc/gcc/cp/pt.c:10168 0x6818cf instantiate_class_template(tree_node*) ../../gcc/gcc/cp/pt.c:10238 0x72887b complete_type(tree_node*) ../../gcc/gcc/cp/typeck.c:131 0x64c1a4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:16901 0x64141e tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15584 0x63f650 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14908 0x6400e4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14894