1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
3 namespace ParameterPacksWithFunctions
{
4 template<typename
...> struct count
;
6 template<typename Head
, typename
...Tail
>
7 struct count
<Head
, Tail
...> {
8 static const unsigned value
= 1 + count
<Tail
...>::value
;
13 static const unsigned value
= 0;
16 template<unsigned> struct unsigned_c
{ };
18 template<typename
... Types
>
19 unsigned_c
<count
<Types
...>::value
> f();
22 unsigned_c
<0> uc0a
= f(); // okay, deduced to an empty pack
23 unsigned_c
<0> uc0b
= f
<>();
24 unsigned_c
<1> uc1
= f
<int>();
25 unsigned_c
<2> uc2
= f
<float, double>();