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