| 
							
							// RUN: %clang_cc1 -std=c++17 -verify %s
 | 
						
						
						
						
							 | 
							
							// expected-no-diagnostics
 | 
						
						
						
						
							 | 
							
							
 | 
						
						
						
						
							 | 
							
							template<typename T, typename U> struct X {
 | 
						
						
						
						
							 | 
							
							  template<typename V> const V &as() { return V::error; }
 | 
						
						
						
						
							 | 
							
							  template<> const U &as<U>() { return u; }
 | 
						
						
						
						
							 | 
							
							  U u;
 | 
						
						
						
						
							 | 
							
							};
 | 
						
						
						
						
							 | 
							
							int f(X<int, int> x) {
 | 
						
						
						
						
							 | 
							
							  return x.as<int>();
 | 
						
						
						
						
							 | 
							
							}
 |