| namespace llvm { |
| template <int, typename...> |
| class impl; |
| // basecase |
| template <int n> |
| class impl<n> {}; |
| // recursion |
| template <int n, typename T, typename... TS> |
| class impl<n, T, TS...> : impl<n + 1, TS...> { |
| using child = impl<n + 1, TS...>; |
| using child::child; // no-crash |
| impl(T); |
| }; |
| template <typename... TS> |
| class container : impl<0, TS...> {}; |
| } // namespace llvm |
| namespace clang { |
| class fun { |
| llvm::container<int, float> k; |
| fun() {} |
| }; |
| class DeclContextLookupResult { |
| static int *const SingleElementDummyList; |
| }; |
| } // namespace clang |
| using namespace clang; |
| int *const DeclContextLookupResult::SingleElementDummyList = nullptr; |