Douglas Gregor | ad6edc1 | 2011-01-04 22:16:00 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -std=c++0x -emit-llvm -o - %s | FileCheck %s |
| 2 | |
| 3 | template<unsigned I, typename ...Types> |
| 4 | struct X { }; |
| 5 | |
Douglas Gregor | 4234eb2 | 2011-01-04 22:41:29 +0000 | [diff] [blame] | 6 | // CHECK: define weak_odr void @_Z2f0IJEEv1XIXsZT_EJspRT_EE |
Douglas Gregor | ad6edc1 | 2011-01-04 22:16:00 +0000 | [diff] [blame] | 7 | template<typename ...Types> |
| 8 | void f0(X<sizeof...(Types), Types&...>) { } |
| 9 | |
| 10 | template void f0(X<0>); |
| 11 | |
Douglas Gregor | 4234eb2 | 2011-01-04 22:41:29 +0000 | [diff] [blame] | 12 | // CHECK: define weak_odr void @_Z2f0IJifdEEv1XIXsZT_EJspRT_EE |
Douglas Gregor | ad6edc1 | 2011-01-04 22:16:00 +0000 | [diff] [blame] | 13 | template void f0<int, float, double>(X<3, int&, float&, double&>); |