fork download
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;
}
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty