75 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
@import templates_top;
 | 
						|
 | 
						|
template<typename T> class Vector;
 | 
						|
 | 
						|
template<typename T> class Vector;
 | 
						|
 | 
						|
template<typename T> class List;
 | 
						|
template<> class List<bool> {
 | 
						|
public:
 | 
						|
  void push_back(int);
 | 
						|
};
 | 
						|
namespace N {
 | 
						|
  template<typename T> class Set;
 | 
						|
}
 | 
						|
namespace N {
 | 
						|
  template<typename T> class Set {
 | 
						|
  public:
 | 
						|
    void insert(T);
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
constexpr unsigned List<int>::*size_left = &List<int>::size;
 | 
						|
List<int> list_left = { 0, 8 };
 | 
						|
typedef List<int> ListInt_left;
 | 
						|
 | 
						|
template <typename T>
 | 
						|
void pendingInstantiationEmit(T) {}
 | 
						|
void triggerPendingInstantiation() {
 | 
						|
  pendingInstantiationEmit(12);
 | 
						|
  pendingInstantiationEmit(42.);
 | 
						|
}
 | 
						|
 | 
						|
void redeclDefinitionEmit(){}
 | 
						|
 | 
						|
typedef Outer<int>::Inner OuterIntInner_left;
 | 
						|
 | 
						|
int defineListDoubleLeft() {
 | 
						|
  List<double> ld;
 | 
						|
  ld.push_back(0.0);
 | 
						|
  return ld.size;
 | 
						|
}
 | 
						|
 | 
						|
template<typename T> struct MergePatternDecl;
 | 
						|
 | 
						|
extern template struct ExplicitInstantiation<false, false>;
 | 
						|
extern template struct ExplicitInstantiation<false, true>;
 | 
						|
extern template struct ExplicitInstantiation<true, false>;
 | 
						|
extern template struct ExplicitInstantiation<true, true>;
 | 
						|
 | 
						|
void useExplicitInstantiation() {
 | 
						|
  ExplicitInstantiation<true, false>().f();
 | 
						|
  ExplicitInstantiation<true, true>().f();
 | 
						|
}
 | 
						|
 | 
						|
template<typename> struct DelayUpdates;
 | 
						|
template<> struct DelayUpdates<int>;
 | 
						|
template<typename T> struct DelayUpdates<T*>;
 | 
						|
template<typename T> void testDelayUpdates(DelayUpdates<T> *p = 0) {}
 | 
						|
 | 
						|
void outOfLineInlineUseLeftF(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::f);
 | 
						|
void outOfLineInlineUseLeftG(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::g);
 | 
						|
void outOfLineInlineUseLeftH(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::h);
 | 
						|
 | 
						|
namespace EmitDefaultedSpecialMembers {
 | 
						|
  inline void f() {
 | 
						|
    SmallString<256> SS;
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
inline int *getStaticDataMemberLeft() {
 | 
						|
  return WithUndefinedStaticDataMember<int[]>::undefined;
 | 
						|
}
 | 
						|
 | 
						|
inline WithAttributes<int> make_with_attributes_left() { return WithAttributes<int>(); }
 |