https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119710
Bug ID: 119710
Summary: failure demangling std::variant stuff
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: jengelh at inai dot de
Target Milestone: ---
gcc version 15.0.1 20250408 (experimental) (SUSE Linux) amd64
binutils 2.43
== Input ==
#include <variant>
int main() {
if (std::variant<int>() == std::variant<int>()) ;
}
== Observed output ==
I have verified that binutils nm and a trivial 5-minutes program invoking
__cxa_demangle both produce a list of 20 symbols (ruling out that binutils is
potentially too old on my system):
$ g++ -std=c++20 -c x.cpp && nm -C x.o | grep _Z | cut -b20-
_ZNSt7variantIJiEEC1EvQ26is_default_constructible_vINSt9_Nth_typeILm0EJDpT_EE4typeEE
_ZNSt7variantIJiEEC2EvQ26is_default_constructible_vINSt9_Nth_typeILm0EJDpT_EE4typeEE
_ZNSt7variantIJiEEC5EvQ26is_default_constructible_vINSt9_Nth_typeILm0EJDpT_EE4typeEE
_ZNSt8__detail9__variant15__raw_idx_visitIZNS0_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS3_IJDpS6_EESC_EUlOT_OT0_E_EESD_SD_RKSF_SJ_T1_EUlSE_SF_E_JRKS4_EEEvSE_DpOT0_
_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZNS0_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__XeqfL0p_fL0p_RSt14convertible_toIbEEEbRKS5_IJDpS8_EESE_EUlOT_OT0_E_EESF_SF_RKSH_SL_T1_EUlSG_SH_E_RKS6_EJEEESt16integer_sequenceImJLm0EEEE14__visit_invokeESO_SQ_
_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZNS0_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__XeqfL0p_fL0p_RSt14convertible_toIbEEEbRKS5_IJDpS8_EESE_EUlOT_OT0_E_EESF_SF_RKSH_SL_T1_EUlSG_SH_E_RKS6_EJEEESt16integer_sequenceImJLm0EEEE28__element_by_index_or_cookieILm0ESQ_EEDcSI_
_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZNS0_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__XeqfL0p_fL0p_RSt14convertible_toIbEEEbRKS5_IJDpS8_EESE_EUlOT_OT0_E_EESF_SF_RKSH_SL_T1_EUlSG_SH_E_RKS6_EJEEESt16integer_sequenceImJLm18446744073709551615EEEE14__visit_invokeESO_SQ_
_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZNS0_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__XeqfL0p_fL0p_RSt14convertible_toIbEEEbRKS5_IJDpS8_EESE_EUlOT_OT0_E_EESF_SF_RKSH_SL_T1_EUlSG_SH_E_RKS6_EJEEESt16integer_sequenceImJLm18446744073709551615EEEE28__element_by_index_or_cookieILm18446744073709551615ESQ_EEDcSI_
_ZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS2_IJDpS5_EESB_EUlOT_OT0_E_EESC_SC_RKSE_SI_T1_
_ZSt10__do_visitINSt8__detail9__variant20__variant_idx_cookieEZNS1_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS4_IJDpS7_EESD_EUlOT_OT0_E_EESE_SE_RKSG_SK_T1_EUlSF_SG_E_JRKS5_EEDcSH_DpOT1_
_ZSt13__invoke_implIvZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS3_IJDpS6_EESC_EUlOT_OT0_E_EESD_SD_RKSF_SJ_T1_EUlSE_SF_E_JNS1_16__variant_cookieESt17integral_constantImLm18446744073709551615EEEESD_St14__invoke_otherSG_DpOT1_
_ZSt13__invoke_implIvZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS3_IJDpS6_EESC_EUlOT_OT0_E_EESD_SD_RKSF_SJ_T1_EUlSE_SF_E_JRKiSt17integral_constantImLm0EEEESD_St14__invoke_otherSG_DpOT1_
_ZSt8__invokeIZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS3_IJDpS6_EESC_EUlOT_OT0_E_EESD_SD_RKSF_SJ_T1_EUlSE_SF_E_JNS1_16__variant_cookieESt17integral_constantImLm18446744073709551615EEEENSt15__invoke_resultISD_JDpT0_EE4typeESE_DpOSQ_
_ZSt8__invokeIZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS3_IJDpS6_EESC_EUlOT_OT0_E_EESD_SD_RKSF_SJ_T1_EUlSE_SF_E_JRKiSt17integral_constantImLm0EEEENSt15__invoke_resultISD_JDpT0_EE4typeESE_DpOSR_
_ZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKSt7variantIJDpS0_EES7_
_ZZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS2_IJDpS5_EESB_EUlOT_OT0_E_EESC_SC_RKSE_SI_T1_ENUlSD_SE_E_clINS0_16__variant_cookieESt17integral_constantImLm18446744073709551615EEEEDaSD_SE_
_ZZNSt8__detail9__variant9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS2_IJDpS5_EESB_EUlOT_OT0_E_EESC_SC_RKSE_SI_T1_ENUlSD_SE_E_clIRKiSt17integral_constantImLm0EEEEDaSD_SE_
_ZZSt10__do_visitINSt8__detail9__variant20__variant_idx_cookieEZNS1_9__compareIbSt7variantIJiEEZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKS4_IJDpS7_EESD_EUlOT_OT0_E_EESE_SE_RKSG_SK_T1_EUlSF_SG_E_JRKS5_EEDcSH_DpOT1_ENKUlSO_zE_clESO_z
_ZZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKSt7variantIJDpS0_EES7_ENKUlOT_OT0_E_clIRKiSF_EEbS9_SB_
_ZZSteqIJiEQfraarQRKT__Xeqfp_fp_RSt14convertible_toIbEEEbRKSt7variantIJDpS0_EES7_ENKUlOT_OT0_E_clImmEEbS9_SB_
== Expected ==
e.g. first line
std::variant<int>::variant() requires
is_default_constructible_v<std::__Nth_type<0>::type>
e.g. last line
something involving this fragment from <variant> most likely
requires ((requires (const _Types& __t) {
{ __t == __t } -> convertible_to<bool>; }) && ...)