1*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li template<typename ...Types> get_num_types(Types...)4*67e74705SXin Liint get_num_types(Types...) { 5*67e74705SXin Li return sizeof...(Types); 6*67e74705SXin Li } 7*67e74705SXin Li 8*67e74705SXin Li // CHECK-LABEL: define weak_odr i32 @_Z13get_num_typesIJifdEEiDpT_ 9*67e74705SXin Li // CHECK: ret i32 3 10*67e74705SXin Li template int get_num_types(int, float, double); 11*67e74705SXin Li 12*67e74705SXin Li // PR10260 - argument packs that expand to nothing 13*67e74705SXin Li namespace test1 { foo()14*67e74705SXin Li template <class... T> void foo() { 15*67e74705SXin Li int values[sizeof...(T)+1] = { T::value... }; 16*67e74705SXin Li // CHECK-LABEL: define linkonce_odr void @_ZN5test13fooIJEEEvv() 17*67e74705SXin Li // CHECK: alloca [1 x i32], align 4 18*67e74705SXin Li } 19*67e74705SXin Li test()20*67e74705SXin Li void test() { 21*67e74705SXin Li foo<>(); 22*67e74705SXin Li } 23*67e74705SXin Li } 24