1 namespace llvm { 2 template <int, typename...> 3 class impl; 4 // basecase 5 template <int n> 6 class impl<n> {}; 7 // recursion 8 template <int n, typename T, typename... TS> 9 class impl<n, T, TS...> : impl<n + 1, TS...> { 10 using child = impl<n + 1, TS...>; 11 using child::child; // no-crash 12 impl(T); 13 }; 14 template <typename... TS> 15 class container : impl<0, TS...> {}; 16 } // namespace llvm 17 namespace clang { 18 class fun { 19 llvm::container<int, float> k; fun()20 fun() {} 21 }; 22 class DeclContextLookupResult { 23 static int *const SingleElementDummyList; 24 }; 25 } // namespace clang 26 using namespace clang; 27 int *const DeclContextLookupResult::SingleElementDummyList = nullptr; 28