@import cxx_templates_common;
template<typename T> T
template<typename T> T ;
namespace N
template<int N> int ;
template<template<typename T, int, int> class> int ;
template<template<typename T, typename U, T> class> int ;
template<typename T> struct SomeTemplate<T*>;
template<typename T> struct SomeTemplate<T*> ;
typedef SomeTemplate<int*> SomeTemplateIntPtr;
template<typename T> void
template<typename T> void
template<typename T> struct RedeclaredAsFriend ;
void
template<int> struct MergeTemplates;
MergeTemplates<0> *merge_templates_a;
auto enum_a_from_a = CommonTemplate<int>::a;
const auto enum_c_from_a = CommonTemplate<int>::c;
template<int> struct UseInt;
template<typename T> void ;
constexpr void = UseRedeclaredEnum<int>;
template<typename> struct MergeSpecializations;
template<typename T> struct MergeSpecializations<T*> ;
template<> struct MergeSpecializations<char> ;
void
template<typename T> struct WithPartialSpecialization<T*> ;
typedef WithPartialSpecializationUse::type WithPartialSpecializationInstantiate;
typedef WithPartialSpecialization<void>::type WithPartialSpecializationInstantiate2;
template<> struct WithExplicitSpecialization<int> ;
template<typename T> template<typename U>
constexpr int Outer<T>::Inner<U>::
;
template<typename T> struct MergeTemplateDefinitions ;
template<typename T> constexpr int MergeTemplateDefinitions<T>::
template<typename T> using AliasTemplate = T;
template<typename T> struct PartiallyInstantiatePartialSpec ;
template<typename T> struct PartiallyInstantiatePartialSpec<T*> ;
typedef PartiallyInstantiatePartialSpec<int*> PartiallyInstantiatePartialSpecHelper;
void ;
inline int
inline int ;
template<typename T1 = int>
;
inline MergeAnonUnionMember<>
template<typename T> struct DontWalkPreviousDeclAfterMerging ;
namespace TestInjectedClassName