1 // RUN: %clang_cc1 -verify %s
3 namespace deduce_pack_non_pack
{
4 template <typename
...> class A
;
5 template <typename
> struct C
{};
6 template <typename T
> void g(C
<A
<T
>>); // expected-note {{candidate template ignored: deduced type 'C<A<[...], (no argument)>>' of 1st parameter does not match adjusted type 'C<A<[...], int>>' of argument [with T = bool]}}
7 void h(C
<A
<bool, int>> &x
) { g(x
); } // expected-error {{no matching function}}
11 template<typename T
, T
...V
> struct integer_sequence
{};
13 template <typename T
, T
... A
, T
... B
>
14 int operator^(integer_sequence
<T
, A
...> a
, // expected-note {{deduced conflicting values for parameter 'A' (<1, 2, 3> vs. <4, 5, 6>)}}
15 integer_sequence
<T
, A
...> b
);
17 int v
= integer_sequence
<int, 1, 2, 3>{} ^ integer_sequence
<int, 4, 5, 6>{}; // expected-error {{invalid operands}}
19 template <typename T
, T
... A
, T
... B
>
20 integer_sequence
<T
, A
+ B
...> operator+(integer_sequence
<T
, A
...> a
,
21 integer_sequence
<T
, B
...> b
);
22 integer_sequence
<int, 5, 7, 9> w
=
23 integer_sequence
<int, 1, 2, 3>{} + integer_sequence
<int, 4, 5, 6>{};