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

Reply via email to