https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122088
Bug ID: 122088
Summary: include/c++/13.2.0/variant:1383:43: internal compiler
error: Segmentation fault
Product: gcc
Version: 13.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: qingren2hxb at gmail dot com
Target Milestone: ---
Input:
// { dg-options "-std=c++2a" }
#include <type_traits>
#include <variant>
template<typename T>
struct Foo {
using __accepted_type = T;
};
template<typename T>
using Bar = std::variant<Foo<T>>;
template<typename... Args>
Bar(Args...) -> Bar<std::common_type_t<Args...>>;
int main() {
Bar b{42};
static_assert(std::is_same_v<decltype(b), Bar<int>>);
return 0;
}
output:
$g++ -std=c++2a
test.cpp:14:9: error: expected ')' before '...' token
14 | Bar(Args...) -> Bar<std::common_type_t<Args...>>;
| ~ ^~~
| )
In file included from
test.cpp:3:
/workspace/installation/include/c++/13.2.0/variant: In substitution of
'template<class ... _Types> template<class _Tp, class> using
std::variant<_Types>::__accepted_type =
std::variant<_Types>::__to_type<__accepted_index<_Tp> > [with _Tp = _Tp&&;
<template-parameter-2-2> = typename std::enable_if<std::variant<Foo<T>
>::__not_self<_Tp&&>, void>::type; _Types = {Foo<T>}]':
test.cpp:17:11: required from here
/workspace/installation/include/c++/13.2.0/variant:1383:43: internal compiler
error: Segmentation fault
1383 | using __accepted_type = __to_type<__accepted_index<_Tp>>;
| ^~~~~~~~~~~~~~~~~~~~
0x2301bba crash_signal
/workspace/gcc/gcc/toplev.cc:314
0x12cc216 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:20461
0x12c7dd4 tsubst_expr(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:19906
0x127f90e tsubst_template_arg(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:12629
0x1287e2e tsubst_template_args(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:13777
0x1287ca5 tsubst_template_args(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:13759
0x12a50c5 tsubst(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:16347
0x12a1c20 tsubst(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:15977
0x129d489 tsubst_decl
/workspace/gcc/gcc/cp/pt.cc:15318
0x12a1872 tsubst(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:15950
0x12dac45 instantiate_template(tree_node*, tree_node*, int)
/workspace/gcc/gcc/cp/pt.cc:22143
0x12dbac4 instantiate_alias_template
/workspace/gcc/gcc/cp/pt.cc:22226
0x12a1c58 tsubst(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:15978
0x127f8c3 tsubst_template_arg(tree_node*, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:12624
0x1311ab2 rewrite_tparm_list
/workspace/gcc/gcc/cp/pt.cc:29772
0x1315d8a alias_ctad_tweaks
/workspace/gcc/gcc/cp/pt.cc:30270
0x13179ab deduction_guides_for
/workspace/gcc/gcc/cp/pt.cc:30505
0x13190c2 do_class_deduction
/workspace/gcc/gcc/cp/pt.cc:30652
0x131b2e2 do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context, tree_node*, int, tree_node*)
/workspace/gcc/gcc/cp/pt.cc:30852
0xed30c1 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
/workspace/gcc/gcc/cp/decl.cc:8328
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Preprocessed source stored into /tmp/ccLP6Yor.out file, please attach this to
your bugreport.
=========
The compiler crashes with a segmentation fault.