Jak mogę curry różne szablony szablonów szablonów?
Parametry szablonu szablonu Variadic przyjmują dowolny szablon:
template<typename T>
struct Test1 {
using type = int;
};
template<typename T, typename T1>
struct Test2 {
using type = char*;
};
template<template<typename...S> class BeCurry>
struct Currying {
};
using curry = Currying<Test1>;
using curry2 = Currying<Test2>;
Chcę klasę szablonów Currying.
Oznacza to, że jeśli parametr przyjmuje jeden parametr szablonu jakoTest1
, curry::apply<T>::type get Test1<T>::type
. Jeśli parametr akceptuje dwa parametry szablonu jakoTest2
, curry2::apply<T0>
jest szablonem „częściowym”,curry2::apply<T0>::apply<T1>::type get Test2<T0,T1>::type
Czy to możliwe do wdrożenia? Ponieważ nie mogę zapytać o liczbę parametrów wewnętrznych parametrów szablonu szablonu:
template<template<typename... S> class BeCurry>
struct Currying {
enum { value = sizeof...(S) }; // error!
};