// P2662R3 - Pack Indexing // PR c++/113798 // { dg-do compile { target c++26 } } template struct same_type; template struct same_type {}; void fn1 (auto... Ts) { decltype(auto) a1 = Ts...[0]; same_type(); decltype(auto) a2 = (Ts...[0]); same_type(); } template void fn2 () { decltype(auto) a1 = Is...[0]; same_type(); decltype(auto) a2 = (Is...[0]); same_type(); decltype(auto) a3 = Is...[1]; same_type(); decltype(auto) a4 = (Is...[1]); same_type(); decltype(auto) a5 = Is...[2]; same_type(); decltype(auto) a6 = (Is...[2]); same_type(); decltype(auto) a7 = Is...[3]; same_type(); decltype(auto) a8 = (Is...[3]); same_type(); decltype(auto) a9 = Is...[4]; same_type(); decltype(auto) a10 = (Is...[4]); same_type(); } static constexpr unsigned char c = 'A'; void g () { int i = 42; fn1 (i, 42u); fn2<0, 1u, 2.0, 3.f, c>(); }