xref: /llvm-project/clang/test/SemaCXX/template-default-param-through-using.cpp (revision daa5f777b4c92b54eeda2e6c54372b0e8ed0af2c)
1*daa5f777SErich Keane // RUN: %clang_cc1 -fsyntax-only -verify %s
2*daa5f777SErich Keane // expected-no-diagnostics
3*daa5f777SErich Keane namespace llvm {
4*daa5f777SErich Keane   template<typename T > struct StringSet;
5*daa5f777SErich Keane   template<int I > struct Int;
6*daa5f777SErich Keane   template <typename Inner, template <typename> class Outer>
7*daa5f777SErich Keane     struct TemplTempl;
8*daa5f777SErich Keane }
9*daa5f777SErich Keane 
10*daa5f777SErich Keane namespace lld {
11*daa5f777SErich Keane   using llvm::StringSet;
12*daa5f777SErich Keane   using llvm::Int;
13*daa5f777SErich Keane   using llvm::TemplTempl;
14*daa5f777SErich Keane };
15*daa5f777SErich Keane 
16*daa5f777SErich Keane namespace llvm {
17*daa5f777SErich Keane   template<typename T > struct StringSet;
18*daa5f777SErich Keane }
19*daa5f777SErich Keane 
20*daa5f777SErich Keane template<typename T> struct Temp{};
21*daa5f777SErich Keane 
22*daa5f777SErich Keane namespace llvm {
23*daa5f777SErich Keane   template<typename T = int> struct StringSet{};
24*daa5f777SErich Keane   template<int I = 5> struct Int{};
25*daa5f777SErich Keane   template <typename Inner, template <typename> class Outer = Temp>
26*daa5f777SErich Keane     struct TemplTempl{};
27*daa5f777SErich Keane };
28*daa5f777SErich Keane 
29*daa5f777SErich Keane namespace lld {
30*daa5f777SErich Keane   StringSet<> s;
31*daa5f777SErich Keane   Int<> i;
32*daa5f777SErich Keane   TemplTempl<int> tt;
33*daa5f777SErich Keane }
34