- #include <type_traits> 
- #include <iostream> 
-   
- template<class T> 
- struct trait{ using type = typename T::type; }; 
-   
- template<class T, class U = typename trait<T>::type> 
- void f(int); 
- void f(...); 
-   
- template<class T, class U = typename T::type> 
- int g(int); 
- void g(...); 
-   
- template<class> 
- struct dependent_false : std::true_type{}; 
-   
- template<class T> 
- struct X{ 
-     static_assert(dependent_false<T>(), "..."); 
-     using type = void; 
- }; 
-   
- int main(){ 
-    //  f<int>(0); 
-     decltype(g<X<int>>(0)) y=5; 
-     std::cout<<"y: "<<y<<std::endl; 
- } 
				I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgdHJhaXR7IHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBUOjp0eXBlOyB9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSA9IHR5cGVuYW1lIHRyYWl0PFQ+Ojp0eXBlPgp2b2lkIGYoaW50KTsKdm9pZCBmKC4uLik7Cgp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVID0gdHlwZW5hbWUgVDo6dHlwZT4KaW50IGcoaW50KTsKdm9pZCBnKC4uLik7Cgp0ZW1wbGF0ZTxjbGFzcz4Kc3RydWN0IGRlcGVuZGVudF9mYWxzZSA6IHN0ZDo6dHJ1ZV90eXBle307Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgWHsKICAgIHN0YXRpY19hc3NlcnQoZGVwZW5kZW50X2ZhbHNlPFQ+KCksICIuLi4iKTsKICAgIHVzaW5nIHR5cGUgPSB2b2lkOwp9OwoKaW50IG1haW4oKXsKICAgLy8gIGY8aW50PigwKTsKICAgIGRlY2x0eXBlKGc8WDxpbnQ+PigwKSkgeT01OwogICAgc3RkOjpjb3V0PDwieTogIjw8eTw8c3RkOjplbmRsOwp9