@@ -574,8 +574,8 @@ char32_t var33 = f2<void>();
574574// DEMANGLED: wchar_t var34
575575wchar_t var34;
576576
577- // MANGLED: ?$S3 @@3HA
578- // DEMANGLED: int $S3
577+ // MANGLED: ?$S4 @@3HA
578+ // DEMANGLED: int $S4
579579// MANGLED: ?var35@@3$$QAHA
580580// DEMANGLED: int && var35
581581int && var35 = 0 ;
@@ -699,8 +699,8 @@ f9<type13>();
699699// DEMANGLED: void f4<(int type14::*)0, (int type14::*)-1>()
700700f4<&type14::datamem1, decltype (&type14::datamem1){nullptr }>();
701701
702- // MANGLED: ??$f4@$MPQtype15@@H03$MPQ1@H0A@ @@YAXXZ
703- // DEMANGLED: void f4<(int type15::*)4, (int type15::*)0 >()
702+ // MANGLED: ??$f4@$MPQtype15@@H03$MPQ1@H0?0 @@YAXXZ
703+ // DEMANGLED: void f4<(int type15::*)4, (int type15::*)-1 >()
704704f4<&type15::datamem2, decltype (&type15::datamem2){nullptr }>();
705705
706706// MANGLED: ??$f4@$MPQtype17@@HF3A@$MPQ1@HFA@?0@@YAXXZ
@@ -842,3 +842,30 @@ struct type21 {
842842// MANGLED: ??$f14@Utype21@@@type21@@SAX_VU0@@Z
843843// DEMANGLED: void type21::f14<type21>(this type21)
844844template void type21::f14 (this type21);
845+
846+ namespace std {
847+ using size_t = decltype (sizeof 0 );
848+
849+ template <class T >
850+ struct tuple_size {};
851+
852+ template <size_t I, class T >
853+ struct tuple_element {};
854+ }
855+
856+ struct type22 {
857+ int mem1;
858+
859+ template <int I>
860+ int & get () { return mem1; }
861+ };
862+
863+ template <>
864+ struct std ::tuple_size<type22> { static constexpr auto value = 1 ; };
865+
866+ template <>
867+ struct std ::tuple_element<0 , type22> { using type = int ; };
868+
869+ // MANGLED: ?s3@@;AAHA
870+ // DEMANGLED: int & s3
871+ auto && [s3] = type22{};
0 commit comments