// RUN: %clang_cc1 -emit-llvm %s -o - -triple=%itanium_abi_triple -std=c++2c | FileCheck %s namespace GH112003 { // CHECK-LABEL: define {{.*}} @_ZN8GH1120033fooILi0ETpTnDaJLi0ELi0EEEEDTsyT0_T_Ev // CHECK-LABEL: define {{.*}} @_ZN8GH1120033fooILi1ETpTnDaJLi0ELi0EEEEDTsyT0_T_Ev // CHECK-LABEL: define {{.*}} @_ZN8GH1120033fooILi0ETpTnDaJLl1EEEEDTsyT0_T_Ev template decltype(V...[I]) foo() {return {};} // CHECK-LABEL: define {{.*}} @_ZN8GH1120033barILi0EJilEEEDyT0_T_v // CHECK-LABEL: define {{.*}} @_ZN8GH1120033barILi1EJilEEEDyT0_T_v template V...[I] bar() {return {};} template using First = T...[0]; // CHECK-LABEL: define {{.*}} @_ZN8GH1120033bazILi0EJiEEEvDy_SUBSTPACK_Li0E // FIXME: handle indexing of partially substituted packs template void baz(First){}; void fn() { foo<0, 0, 0>(); foo<1, 0, 0>(); foo<0, 1L>(); bar<0, int, long>(); bar<1, int, long>(); baz<0, int>(0); } }