// A type templated for different function call signatures.
template <typename Signature> class Used;
template <typename T_Ret, typename ...T_Args>
class Used<T_Ret(T_Args...)> {
public:
	// A static method for a specific type.
	template <typename T>
	static void specific() { }
};

// Some class using the above.
template <typename T>
class User {
public:
	// A method that must call the specific function of used.
	template <typename T_Ret, typename ...T_Args>
	void method() {
		using It = Used<T_Ret(T_Args...)>;
		using Me = T;
		// error: expected primary-expression before '>' token
		It::specific<Me>();
	}
};

int main() {
	User<int> user;
	user.method<void, int>();
}
