forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			598 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			598 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| template <typename T>
 | |
| struct Iterator {
 | |
|   void operator++() {}
 | |
|   const T& operator*() {
 | |
|     static T* TT = new T();
 | |
|     return *TT;
 | |
|   }
 | |
|   bool operator!=(const Iterator &) { return false; }
 | |
|   typedef const T& const_reference;
 | |
| };
 | |
| template <typename T>
 | |
| struct View {
 | |
|   T begin() { return T(); }
 | |
|   T begin() const { return T(); }
 | |
|   T end() { return T(); }
 | |
|   T end() const { return T(); }
 | |
|   typedef typename T::const_reference const_reference;
 | |
| };
 | |
| 
 | |
| struct S {
 | |
|   S();
 | |
|   S(const S &);
 | |
|   ~S();
 | |
|   S &operator=(const S &);
 | |
| };
 | |
| 
 | |
| void negativeConstReference() {
 | |
|   for (const S S1 : View<Iterator<S>>()) {
 | |
|   }
 | |
| }
 | 
