struct  TemplateTypeList0 { } ; 
 
template < template < typename >  class  U> 
struct  TemplateTypeSel
{ 
	template < typename  T> 
	struct  bind
	{ 
		typedef  U< T> 	type; 
	} ; 
} ; 
 
template < template < typename  T>  class  T1, template < typename  T>  class  ...Args > 
struct  VariadicTemplateTypeList
{ 
	typedef  TemplateTypeSel< T1> 	Head; 
	typedef  VariadicTemplateTypeList< Args...> 	Tail; 
} ; 
template < template < typename  T>  class  T1> 
struct  VariadicTemplateTypeList< T1> 
{ 
	typedef  TemplateTypeSel< T1> 	Head; 
	typedef  TemplateTypeList0	Tail; 
} ; 
 
template < template < typename  T>  class  ...Args > 
struct  Templates
{ 
	typedef  VariadicTemplateTypeList< Args...>  type; 
} ; 
 
 
 
template < typename  T> 
struct  Y
{ 
	T v; 
} ; 
 
 
int  main( void ) 
{ 
	VariadicTemplateTypeList< Y, Y> :: Head :: bind < int > :: type  a; 
	Templates< Y> :: type :: Head :: bind < int > :: type  b; 
	return  0 ; 
} 
 
c3RydWN0IFRlbXBsYXRlVHlwZUxpc3QwIHt9OwoKdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFU+CnN0cnVjdCBUZW1wbGF0ZVR5cGVTZWwKewoJdGVtcGxhdGU8dHlwZW5hbWUgVD4KCXN0cnVjdCBiaW5kCgl7CgkJdHlwZWRlZiBVPFQ+CXR5cGU7Cgl9Owp9OwoKdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVDEsIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIC4uLkFyZ3M+CnN0cnVjdCBWYXJpYWRpY1RlbXBsYXRlVHlwZUxpc3QKewoJdHlwZWRlZiBUZW1wbGF0ZVR5cGVTZWw8VDE+CUhlYWQ7Cgl0eXBlZGVmIFZhcmlhZGljVGVtcGxhdGVUeXBlTGlzdDxBcmdzLi4uPglUYWlsOwp9Owp0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUMT4Kc3RydWN0IFZhcmlhZGljVGVtcGxhdGVUeXBlTGlzdDxUMT4KewoJdHlwZWRlZiBUZW1wbGF0ZVR5cGVTZWw8VDE+CUhlYWQ7Cgl0eXBlZGVmIFRlbXBsYXRlVHlwZUxpc3QwCVRhaWw7Cn07Cgp0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyAuLi5BcmdzPgpzdHJ1Y3QgVGVtcGxhdGVzCnsKCXR5cGVkZWYgVmFyaWFkaWNUZW1wbGF0ZVR5cGVMaXN0PEFyZ3MuLi4+IHR5cGU7Cn07CgoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBZCnsKCVQgdjsKfTsKCgppbnQgbWFpbih2b2lkKQp7CglWYXJpYWRpY1RlbXBsYXRlVHlwZUxpc3Q8WSwgWT46OkhlYWQ6OmJpbmQ8aW50Pjo6dHlwZSBhOwoJVGVtcGxhdGVzPFk+Ojp0eXBlOjpIZWFkOjpiaW5kPGludD46OnR5cGUgYjsKCXJldHVybiAwOwp9Cg==
				
				 
			
				
			
			
				
	
		
	
		 
	prog.cpp:17:42: sorry, unimplemented: cannot expand 'template<class T> class ... Args ...' into a fixed-length argument list
prog.cpp:29:42: sorry, unimplemented: cannot expand 'template<class T> class ... Args ...' into a fixed-length argument list
prog.cpp: In function 'int main()':
prog.cpp:44:22: error: '::Head' has not been declared
prog.cpp:44:32: error: expected initializer before '<' token