1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -fmodules -verify -fmodules-cache-path=%t -I %S/Inputs/template-default-args -std=c++11 %s
3 
4 template<typename T> struct A;
5 template<typename T> struct B;
6 template<typename T> struct C;
7 template<typename T = int> struct D;
8 template<typename T = int> struct E {};
9 template<typename T> struct H {}; // expected-note {{here}}
10 
11 #include "b.h"
12 
13 template<typename T = int> struct A {};
14 template<typename T> struct B {};
15 template<typename T = int> struct B;
16 template<typename T = int> struct C;
17 template<typename T> struct D {};
18 template<typename T> struct F {};
19 template<typename T> struct G {}; // expected-note {{here}}
20 
21 #include "c.h"
22 
23 A<> a;
24 B<> b;
25 extern C<> c;
26 D<> d;
27 E<> e;
28 F<> f;
29 G<> g; // expected-error {{too few}}
30 H<> h; // expected-error {{too few}}
31