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>; }) && ...)